(v4.2) Open Discord Framework Update (Part 2)

Replaced all "Default" classes & types with ID mappings & improved types. Updated Interactive Setup CLI & certain events, renamed ODStat's to ODStatistics. Moved many classes, types & interfaces to the framework
This commit is contained in:
DJj123dj
2026-04-03 11:18:59 +02:00
parent f42b70d1b9
commit fa8bc0eb6c
79 changed files with 2044 additions and 5111 deletions
+3 -3
View File
@@ -25,12 +25,12 @@
"type": "commonjs", "type": "commonjs",
"license": "GPL-3.0-only", "license": "GPL-3.0-only",
"dependencies": { "dependencies": {
"@discordjs/rest": "^2.6.0", "@discordjs/rest": "^2.6.1",
"@open-discord-bots/framework": "^0.1.2", "@open-discord-bots/framework": "^0.2.8",
"@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",
"discord.js": "^14.24.2", "discord.js": "^14.26.0",
"formatted-json-stringify": "^1.2.1", "formatted-json-stringify": "^1.2.1",
"terminal-kit": "^3.1.2", "terminal-kit": "^3.1.2",
"typescript": "^5.9.3" "typescript": "^5.9.3"
+2 -2
View File
@@ -22,8 +22,8 @@ export const registerActions = async () => {
ticket.get("opendiscord:busy").value = true ticket.get("opendiscord:busy").value = true
//update stats //update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-claimed",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-claimed",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-claimed",user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-claimed",user.id,1,"increase")
//update category //update category
if (typeof params.allowCategoryChange == "boolean" ? params.allowCategoryChange : true){ if (typeof params.allowCategoryChange == "boolean" ? params.allowCategoryChange : true){
+2 -2
View File
@@ -30,8 +30,8 @@ export const registerActions = async () => {
ticket.get("opendiscord:busy").value = true ticket.get("opendiscord:busy").value = true
//update stats //update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-closed",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-closed",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-closed",user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-closed",user.id,1,"increase")
//update category //update category
if (typeof params.allowCategoryChange == "boolean" ? params.allowCategoryChange : true){ if (typeof params.allowCategoryChange == "boolean" ? params.allowCategoryChange : true){
+3 -3
View File
@@ -184,8 +184,8 @@ export const registerActions = async () => {
]) ])
//manage stats //manage stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-created",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-created",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-created",user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-created",user.id,1,"increase")
//manage bot permissions //manage bot permissions
await opendiscord.events.get("onTicketPermissionsCreated").emit([option,opendiscord.permissions,channel,user]) await opendiscord.events.get("onTicketPermissionsCreated").emit([option,opendiscord.permissions,channel,user])
@@ -215,7 +215,7 @@ export const registerActions = async () => {
if (generalConfig.data.system.pinFirstTicketMessage && msg.pinnable) await msg.pin("Ticket Message") if (generalConfig.data.system.pinFirstTicketMessage && msg.pinnable) await msg.pin("Ticket Message")
//manage stats //manage stats
await opendiscord.stats.get("opendiscord:ticket").setStat("opendiscord:messages-sent",ticket.id.value,1,"increase") await opendiscord.statistics.get("opendiscord:ticket").setStat("opendiscord:messages-sent",ticket.id.value,1,"increase")
await opendiscord.events.get("afterTicketMainMessageCreated").emit([ticket,msg,channel,user]) await opendiscord.events.get("afterTicketMainMessageCreated").emit([ticket,msg,channel,user])
}catch(err){ }catch(err){
+2 -2
View File
@@ -149,8 +149,8 @@ export const registerActions = async () => {
}) })
//update stats //update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:transcripts-created",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:transcripts-created",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:transcripts-created",params.user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:transcripts-created",params.user.id,1,"increase")
await opendiscord.events.get("afterTranscriptCreated").emit([opendiscord.transcripts,instance.result.ticket,instance.result.channel,instance.result.user]) await opendiscord.events.get("afterTranscriptCreated").emit([opendiscord.transcripts,instance.result.ticket,instance.result.channel,instance.result.user])
}), }),
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => { new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
+2 -2
View File
@@ -59,8 +59,8 @@ export const registerActions = async () => {
} }
//update stats //update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-deleted",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-deleted",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-deleted",user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-deleted",user.id,1,"increase")
//delete ticket from manager //delete ticket from manager
opendiscord.tickets.remove(ticket.id) opendiscord.tickets.remove(ticket.id)
+2 -2
View File
@@ -17,8 +17,8 @@ export const registerActions = async () => {
ticket.option = data ticket.option = data
//update stats //update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-moved",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-moved",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-moved",user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-moved",user.id,1,"increase")
//get new channel properties //get new channel properties
const channelPrefix = ticket.option.get("opendiscord:channel-prefix").value const channelPrefix = ticket.option.get("opendiscord:channel-prefix").value
+2 -2
View File
@@ -22,8 +22,8 @@ export const registerActions = async () => {
ticket.get("opendiscord:busy").value = true ticket.get("opendiscord:busy").value = true
//update stats //update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-pinned",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-pinned",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-pinned",user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-pinned",user.id,1,"increase")
//move to top of category //move to top of category
if (channel.parent){ if (channel.parent){
+2 -2
View File
@@ -35,8 +35,8 @@ export const registerActions = async () => {
} }
//update stats //update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-reopened",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-reopened",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-reopened",user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-reopened",user.id,1,"increase")
//update category //update category
if (typeof params.allowCategoryChange == "boolean" ? params.allowCategoryChange : true){ if (typeof params.allowCategoryChange == "boolean" ? params.allowCategoryChange : true){
+2 -2
View File
@@ -33,8 +33,8 @@ export const registerActions = async () => {
} }
//update stats //update stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-transferred",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-transferred",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:tickets-transferred",user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:tickets-transferred",user.id,1,"increase")
//get new channel properties //get new channel properties
const channelPrefix = ticket.option.get("opendiscord:channel-prefix").value const channelPrefix = ticket.option.get("opendiscord:channel-prefix").value
+6 -6
View File
@@ -387,7 +387,7 @@ const statsEmbeds = () => {
new api.ODWorker("opendiscord:stats-global",0,async (instance,params) => { new api.ODWorker("opendiscord:stats-global",0,async (instance,params) => {
const {guild,channel,user} = params const {guild,channel,user} = params
const scope = opendiscord.stats.get("opendiscord:global") const scope = opendiscord.statistics.get("opendiscord:global")
if (!scope) return if (!scope) return
const data = await scope.render("GLOBAL",guild,channel,user) const data = await scope.render("GLOBAL",guild,channel,user)
@@ -397,7 +397,7 @@ const statsEmbeds = () => {
if (opendiscord.permissions.hasPermissions("owner",await opendiscord.permissions.getPermissions(user,channel,guild))){ if (opendiscord.permissions.hasPermissions("owner",await opendiscord.permissions.getPermissions(user,channel,guild))){
//show system data when owner or developer //show system data when owner or developer
const systemScope = opendiscord.stats.get("opendiscord:system") const systemScope = opendiscord.statistics.get("opendiscord:system")
if (!systemScope) return if (!systemScope) return
const systemData = await systemScope.render("GLOBAL",guild,channel,user) const systemData = await systemScope.render("GLOBAL",guild,channel,user)
instance.addFields({name:systemScope.name,value:systemData,inline:false}) instance.addFields({name:systemScope.name,value:systemData,inline:false})
@@ -411,9 +411,9 @@ const statsEmbeds = () => {
new api.ODWorker("opendiscord:stats-ticket",0,async (instance,params) => { new api.ODWorker("opendiscord:stats-ticket",0,async (instance,params) => {
const {guild,channel,user,scopeData} = params const {guild,channel,user,scopeData} = params
const scope = opendiscord.stats.get("opendiscord:ticket") const scope = opendiscord.statistics.get("opendiscord:ticket")
const participantsScope = opendiscord.stats.get("opendiscord:participants") const participantsScope = opendiscord.statistics.get("opendiscord:participants")
const messagesScope = opendiscord.stats.get("opendiscord:messages") const messagesScope = opendiscord.statistics.get("opendiscord:messages")
if (!scope || !participantsScope || !messagesScope) return if (!scope || !participantsScope || !messagesScope) return
const data = await scope.render(scopeData.id.value,guild,channel,user) const data = await scope.render(scopeData.id.value,guild,channel,user)
const participantsData = await participantsScope.render(scopeData.id.value,guild,channel,user) const participantsData = await participantsScope.render(scopeData.id.value,guild,channel,user)
@@ -433,7 +433,7 @@ const statsEmbeds = () => {
new api.ODWorker("opendiscord:stats-user",0,async (instance,params) => { new api.ODWorker("opendiscord:stats-user",0,async (instance,params) => {
const {guild,channel,user,scopeData} = params const {guild,channel,user,scopeData} = params
const scope = opendiscord.stats.get("opendiscord:user") const scope = opendiscord.statistics.get("opendiscord:user")
if (!scope) return if (!scope) return
const data = await scope.render(scopeData.id,guild,channel,user) const data = await scope.render(scopeData.id,guild,channel,user)
+2 -2
View File
@@ -51,8 +51,8 @@ export const registerCommandResponders = async () => {
]) ])
//manage stats //manage stats
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:users-blacklisted",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:users-blacklisted",1,"increase")
await opendiscord.stats.get("opendiscord:user").setStat("opendiscord:users-blacklisted",user.id,1,"increase") await opendiscord.statistics.get("opendiscord:user").setStat("opendiscord:users-blacklisted",user.id,1,"increase")
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:blacklist-add").build(source,{guild,channel,user,data,reason})) await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:blacklist-add").build(source,{guild,channel,user,data,reason}))
+1 -1
View File
@@ -106,7 +106,7 @@ export const registerCommandResponders = async () => {
}else if (scope == "reset"){ }else if (scope == "reset"){
const reason = instance.options.getString("reason",false) const reason = instance.options.getString("reason",false)
opendiscord.stats.reset() opendiscord.statistics.reset()
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:stats-reset").build(source,{guild,channel,user,reason})) await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:stats-reset").build(source,{guild,channel,user,reason}))
} }
+41
View File
@@ -0,0 +1,41 @@
//EXPORT FRAMEWORK
export * from "@open-discord-bots/framework/api"
//EXPORT OPEN TICKET MAPPINGS
export * from "./mappings/action"
export * from "./mappings/base"
export * from "./mappings/builder"
export * from "./mappings/checker"
export * from "./mappings/client"
export * from "./mappings/code"
export * from "./mappings/config"
export * from "./mappings/console"
export * from "./mappings/cooldown"
export * from "./mappings/database"
export * from "./mappings/event"
export * from "./mappings/flag"
export * from "./mappings/fuse"
export * from "./mappings/helpmenu"
export * from "./mappings/language"
export * from "./mappings/permission"
export * from "./mappings/plugin"
export * from "./mappings/post"
export * from "./mappings/progressbar"
export * from "./mappings/responder"
export * from "./mappings/session"
export * from "./mappings/startscreen"
export * from "./mappings/statistic"
export * from "./mappings/verifybar"
//EXPORT OPENTICKET MODULES
export * from "./api/blacklist"
export * from "./api/option"
export * from "./api/panel"
export * from "./api/priority"
export * from "./api/question"
export * from "./api/role"
export * from "./api/ticket"
export * from "./api/transcript"
//EXPORT MAIN MODULE
export { ODOpenTicketMain } from "./main"
-42
View File
@@ -1,42 +0,0 @@
//EXPORT FRAMEWORK
export * from "@open-discord-bots/framework/api"
//EXPORT DEFAULT MODULES
export * from "./defaults/base"
export * from "./defaults/event"
export * from "./defaults/config"
export * from "./defaults/database"
export * from "./defaults/plugin"
export * from "./defaults/checker"
export * from "./defaults/client"
export * from "./defaults/language"
export * from "./defaults/builder"
export * from "./defaults/responder"
export * from "./defaults/action"
export * from "./defaults/flag"
export * from "./defaults/permission"
export * from "./defaults/helpmenu"
export * from "./defaults/session"
export * from "./defaults/stat"
export * from "./defaults/worker"
export * from "./defaults/code"
export * from "./defaults/cooldown"
export * from "./defaults/post"
export * from "./defaults/progressbar"
export * from "./defaults/startscreen"
export * from "./defaults/console"
export * from "./defaults/verifybar"
export * from "./defaults/fuse"
//EXPORT OPENTICKET MODULES
export * from "./openticket/question"
export * from "./openticket/option"
export * from "./openticket/panel"
export * from "./openticket/ticket"
export * from "./openticket/blacklist"
export * from "./openticket/transcript"
export * from "./openticket/role"
export * from "./openticket/priority"
//EXPORT MAIN MODULE
export { ODOpenTicketMain } from "./main"
-45
View File
@@ -1,45 +0,0 @@
///////////////////////////////////////
//BASE MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODVersionManagerIds_Default `interface`
* This interface is a list of ids available in the `ODVersionManager` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODVersionManagerIds_Default {
"opendiscord:version":api.ODVersion,
"opendiscord:last-version":api.ODVersion,
"opendiscord:api":api.ODVersion,
"opendiscord:transcripts":api.ODVersion,
"opendiscord:livestatus":api.ODVersion
}
/**## ODFlagManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODFlagManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.flags`!
*/
export class ODVersionManager_Default extends api.ODVersionManager {
get<VersionId extends keyof ODVersionManagerIds_Default>(id:VersionId): ODVersionManagerIds_Default[VersionId]
get(id:api.ODValidId): api.ODVersion|null
get(id:api.ODValidId): api.ODVersion|null {
return super.get(id)
}
remove<VersionId extends keyof ODVersionManagerIds_Default>(id:VersionId): ODVersionManagerIds_Default[VersionId]
remove(id:api.ODValidId): api.ODVersion|null
remove(id:api.ODValidId): api.ODVersion|null {
return super.remove(id)
}
exists(id:keyof ODVersionManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-384
View File
@@ -1,384 +0,0 @@
///////////////////////////////////////
//DEFAULT CONFIG CHECKER MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
import { ODLanguageManager_Default } from "./language"
import ansis from "ansis"
/**## ODCheckerManagerIds_Default `interface`
* This interface is a list of ids available in the `ODCheckerManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODCheckerManagerIds_Default {
"opendiscord:general":api.ODChecker,
"opendiscord:questions":api.ODChecker,
"opendiscord:options":api.ODChecker,
"opendiscord:panels":api.ODChecker,
"opendiscord:transcripts":api.ODChecker
}
/**## ODCheckerManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODCheckerManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.checkers`!
*/
export class ODCheckerManager_Default extends api.ODCheckerManager {
declare translation: ODCheckerTranslationRegister_Default
declare renderer: ODCheckerRenderer_Default
declare functions: ODCheckerFunctionManager_Default
get<CheckerId extends keyof ODCheckerManagerIds_Default>(id:CheckerId): ODCheckerManagerIds_Default[CheckerId]
get(id:api.ODValidId): api.ODChecker|null
get(id:api.ODValidId): api.ODChecker|null {
return super.get(id)
}
remove<CheckerId extends keyof ODCheckerManagerIds_Default>(id:CheckerId): ODCheckerManagerIds_Default[CheckerId]
remove(id:api.ODValidId): api.ODChecker|null
remove(id:api.ODValidId): api.ODChecker|null {
return super.remove(id)
}
exists(id:keyof ODCheckerManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODCheckerRenderer_Default `default_class`
* This is a special class that adds type definitions & features to the ODCheckerRenderer class.
* It contains the code that renders the default config checker.
*
* This default class is made for the global variable `opendiscord.checkers.renderer`!
*/
export class ODCheckerRenderer_Default extends api.ODCheckerRenderer {
extraHeaderText: string[] = []
extraFooterText: string[] = []
extraTopText: string[] = []
extraBottomText: string[] = []
horizontalFiller: string = "="
verticalFiller: string = "|"
descriptionSeparator: string = " => "
headerSeparator: string = " => "
footerTipPrefix: string = "=> "
disableHeader: boolean = false
disableFooter: boolean = false
getComponents(compact:boolean, renderEmpty:boolean, translation:ODCheckerTranslationRegister_Default, data:api.ODCheckerResult): string[] {
const tm = translation
const t = {
headerOpenticket:tm.get("other","opendiscord:header-openticket") ?? "OPEN TICKET",
headerConfigchecker:tm.get("other","opendiscord:header-configchecker") ?? "CONFIG CHECKER",
headerDescription:tm.get("other","opendiscord:header-description") ?? "check for errors in your config files!",
footerError:tm.get("other","opendiscord:footer-error") ?? "the bot won't start until all {0}'s are fixed!",
footerWarning:tm.get("other","opendiscord:footer-warning") ?? "it's recommended to fix all {0}'s before starting!",
footerSupport:tm.get("other","opendiscord:footer-support") ?? "SUPPORT: {0} - DOCS: {1}",
error:tm.get("other","opendiscord:type-error") ?? "[ERROR]",
warning:tm.get("other","opendiscord:type-warning") ?? "[WARNING]",
info:tm.get("other","opendiscord:type-info") ?? "[INFO]",
compactInfo:tm.get("other","opendiscord:compact-information") ?? "use {0} for more information!",
dataPath:tm.get("other","opendiscord:data-path") ?? "path",
dataDocs:tm.get("other","opendiscord:data-docs") ?? "docs",
dataMessage:tm.get("other","opendiscord:data-message") ?? "message"
}
const hasErrors = data.messages.filter((m) => m.type == "error").length > 0
const hasWarnings = data.messages.filter((m) => m.type == "warning").length > 0
const hasInfo = data.messages.filter((m) => m.type == "info").length > 0
if (!renderEmpty && !hasErrors && !hasWarnings && (!hasInfo || compact)) return []
const headerText = ansis.bold.hex("#f8ba00")(t.headerOpenticket)+" "+t.headerConfigchecker+this.headerSeparator+ansis.hex("#f8ba00")(t.headerDescription)
const footerErrorText = (hasErrors) ? this.footerTipPrefix+ansis.gray(tm.insertTranslationParams(t.footerError,[ansis.bold.red(t.error)])) : ""
const footerWarningText = (hasWarnings) ? this.footerTipPrefix+ansis.gray(tm.insertTranslationParams(t.footerWarning,[ansis.bold.yellow(t.warning)])) : ""
const footerSupportText = tm.insertTranslationParams(t.footerSupport,[ansis.green("https://discord.dj-dj.be"),ansis.green("https://otdocs.dj-dj.be")])
const bottomCompactInfo = (compact) ? ansis.gray(tm.insertTranslationParams(t.compactInfo,[ansis.bold.green("npm start -- --checker")])) : ""
const finalHeader = [headerText,...this.extraHeaderText]
const finalFooter = [footerErrorText,footerWarningText,footerSupportText,...this.extraFooterText]
const finalTop = [...this.extraTopText]
const finalBottom = [bottomCompactInfo,...this.extraBottomText]
const borderLength = this.#getLongestLength([...finalHeader,...finalFooter])
const finalComponents: string[] = []
//header
if (!this.disableHeader){
finalHeader.forEach((text) => {
if (text.length < 1) return
finalComponents.push(this.#createBlockFromText(text,borderLength))
})
}
finalComponents.push(this.#getHorizontalDivider(borderLength+4))
//top
finalTop.forEach((text) => {
if (text.length < 1) return
finalComponents.push(this.verticalFiller+" "+text)
})
finalComponents.push(this.verticalFiller)
//messages
if (compact){
//use compact messages
data.messages.forEach((msg,index) => {
//compact mode doesn't render info
if (msg.type == "info") return
//check if translation available & use it if possible
const rawTranslation = tm.get("message",msg.messageId.value)
const translatedMessage = (rawTranslation) ? tm.insertTranslationParams(rawTranslation,msg.translationParams) : msg.message
if (msg.type == "error") finalComponents.push(this.verticalFiller+" "+ansis.bold.red(`${t.error} ${translatedMessage}`))
else if (msg.type == "warning") finalComponents.push(this.verticalFiller+" "+ansis.bold.yellow(`${t.warning} ${translatedMessage}`))
const pathSplitter = msg.path ? ":" : ""
finalComponents.push(this.verticalFiller+ansis.bold(this.descriptionSeparator)+ansis.cyan(`${ansis.magenta(msg.filepath+pathSplitter)} ${msg.path}`))
if (index != data.messages.length-1) finalComponents.push(this.verticalFiller)
})
}else{
//use full messages
data.messages.forEach((msg,index) => {
//check if translation available & use it if possible
const rawTranslation = tm.get("message",msg.messageId.value)
const translatedMessage = (rawTranslation) ? tm.insertTranslationParams(rawTranslation,msg.translationParams) : msg.message
if (msg.type == "error") finalComponents.push(this.verticalFiller+" "+ansis.bold.red(`${t.error} ${translatedMessage}`))
else if (msg.type == "warning") finalComponents.push(this.verticalFiller+" "+ansis.bold.yellow(`${t.warning} ${translatedMessage}`))
else if (msg.type == "info") finalComponents.push(this.verticalFiller+" "+ansis.bold.blue(`${t.info} ${translatedMessage}`))
const pathSplitter = msg.path ? ":" : ""
finalComponents.push(this.verticalFiller+" "+ansis.bold((t.dataPath)+this.descriptionSeparator)+ansis.cyan(`${ansis.magenta(msg.filepath+pathSplitter)} ${msg.path}`))
if (msg.locationDocs) finalComponents.push(this.verticalFiller+" "+ansis.bold(t.dataDocs+this.descriptionSeparator)+ansis.italic.gray(msg.locationDocs))
if (msg.messageDocs) finalComponents.push(this.verticalFiller+" "+ansis.bold(t.dataMessage+this.descriptionSeparator)+ansis.italic.gray(msg.messageDocs))
if (index != data.messages.length-1) finalComponents.push(this.verticalFiller)
})
}
//bottom
finalComponents.push(this.verticalFiller)
finalBottom.forEach((text) => {
if (text.length < 1) return
finalComponents.push(this.verticalFiller+" "+text)
})
//footer
finalComponents.push(this.#getHorizontalDivider(borderLength+4))
if (!this.disableFooter){
finalFooter.forEach((text) => {
if (text.length < 1) return
finalComponents.push(this.#createBlockFromText(text,borderLength))
})
finalComponents.push(this.#getHorizontalDivider(borderLength+4))
}
//return all components
return finalComponents
}
/**Get the length of the longest string in the array. */
#getLongestLength(texts:string[]): number {
return Math.max(...texts.map((t) => ansis.strip(t).length))
}
/**Get a horizontal divider used between different parts of the config checker result. */
#getHorizontalDivider(width:number): string {
if (width > 2) width = width-2
else return this.verticalFiller+this.verticalFiller
let divider = this.verticalFiller + this.horizontalFiller.repeat(width) + this.verticalFiller
return divider
}
/**Create a block of text with a vertical divider on the left & right side. */
#createBlockFromText(text:string,width:number): string {
if (width < 3) return this.verticalFiller+this.verticalFiller
let newWidth = width-ansis.strip(text).length+1
let final = this.verticalFiller+" "+text+" ".repeat(newWidth)+this.verticalFiller
return final
}
}
/**## ODCheckerTranslationRegisterOtherIds_Default `interface`
* This interface is a list of ids available in the `ODCheckerTranslationRegister_Default` class.
* It's used to generate typescript declarations for this class.
*/
export type ODCheckerTranslationRegisterOtherIds_Default = (
"opendiscord:header-openticket"|
"opendiscord:header-configchecker"|
"opendiscord:header-description"|
"opendiscord:type-error"|
"opendiscord:type-warning"|
"opendiscord:type-info"|
"opendiscord:data-path"|
"opendiscord:data-docs"|
"opendiscord:data-message"|
"opendiscord:compact-information"|
"opendiscord:footer-error"|
"opendiscord:footer-warning"|
"opendiscord:footer-support"
)
/**## ODCheckerTranslationRegisterMessageIds_Default `interface`
* This interface is a list of ids available in the `ODCheckerTranslationRegister_Default` class.
* It's used to generate typescript declarations for this class.
*/
export type ODCheckerTranslationRegisterMessageIds_Default = (
"opendiscord:invalid-type"|
"opendiscord:property-missing"|
"opendiscord:property-optional"|
"opendiscord:object-disabled"|
"opendiscord:null-invalid"|
"opendiscord:switch-invalid-type"|
"opendiscord:object-switch-invalid-type"|
"opendiscord:string-too-short"|
"opendiscord:string-too-long"|
"opendiscord:string-length-invalid"|
"opendiscord:string-starts-with"|
"opendiscord:string-ends-with"|
"opendiscord:string-contains"|
"opendiscord:string-inverted-contains"|
"opendiscord:string-choices"|
"opendiscord:string-lowercase"|
"opendiscord:string-uppercase"|
"opendiscord:string-special-characters"|
"opendiscord:string-no-spaces"|
"opendiscord:string-regex"|
"opendiscord:string-capital-word"|
"opendiscord:string-capital-sentence"|
"opendiscord:string-punctuation"|
"opendiscord:number-nan"|
"opendiscord:number-too-short"|
"opendiscord:number-too-long"|
"opendiscord:number-length-invalid"|
"opendiscord:number-too-small"|
"opendiscord:number-too-large"|
"opendiscord:number-not-equal"|
"opendiscord:number-step"|
"opendiscord:number-step-offset"|
"opendiscord:number-starts-with"|
"opendiscord:number-ends-with"|
"opendiscord:number-contains"|
"opendiscord:number-inverted-contains"|
"opendiscord:number-choices"|
"opendiscord:number-float"|
"opendiscord:number-negative"|
"opendiscord:number-positive"|
"opendiscord:number-zero"|
"opendiscord:boolean-true"|
"opendiscord:boolean-false"|
"opendiscord:array-empty-disabled"|
"opendiscord:array-empty-required"|
"opendiscord:array-too-short"|
"opendiscord:array-too-long"|
"opendiscord:array-length-invalid"|
"opendiscord:array-invalid-types"|
"opendiscord:array-double"|
"opendiscord:discord-invalid-id"|
"opendiscord:discord-invalid-id-options"|
"opendiscord:discord-invalid-token"|
"opendiscord:color-invalid"|
"opendiscord:emoji-too-short"|
"opendiscord:emoji-too-long"|
"opendiscord:emoji-custom"|
"opendiscord:emoji-invalid"|
"opendiscord:url-invalid"|
"opendiscord:url-invalid-http"|
"opendiscord:url-invalid-protocol"|
"opendiscord:url-invalid-hostname"|
"opendiscord:url-invalid-extension"|
"opendiscord:url-invalid-path"|
"opendiscord:id-not-unique"|
"opendiscord:id-non-existent"|
"opendiscord:invalid-language"|
"opendiscord:invalid-button"|
"opendiscord:unused-option"|
"opendiscord:unused-question"|
"opendiscord:dropdown-option"
)
/**## ODCheckerTranslationRegister_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODCheckerTranslationRegister class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.checkers.translation`!
*/
export class ODCheckerTranslationRegister_Default extends api.ODCheckerTranslationRegister {
get(type:"other", id:ODCheckerTranslationRegisterOtherIds_Default): string
get(type:"message", id:ODCheckerTranslationRegisterMessageIds_Default): string
get(type:"message"|"other", id:string): string|null
get(type:"message"|"other", id:string): string|null {
return super.get(type,id)
}
set(type:"other", id:ODCheckerTranslationRegisterOtherIds_Default, translation:string): boolean
set(type:"message", id:ODCheckerTranslationRegisterMessageIds_Default, translation:string): boolean
set(type:"message"|"other", id:string, translation:string): boolean
set(type:"message"|"other", id:string, translation:string): boolean {
return super.set(type,id,translation)
}
delete(type:"other", id:ODCheckerTranslationRegisterOtherIds_Default): boolean
delete(type:"message", id:ODCheckerTranslationRegisterMessageIds_Default): boolean
delete(type:"message"|"other", id:string): boolean
delete(type:"message"|"other", id:string): boolean {
return super.delete(type,id)
}
quickTranslate(manager:ODLanguageManager_Default, translationId:string, type:"other"|"message", id:ODCheckerTranslationRegisterOtherIds_Default|ODCheckerTranslationRegisterMessageIds_Default)
quickTranslate(manager:ODLanguageManager_Default, translationId:string, type:"other"|"message", id:string)
quickTranslate(manager:ODLanguageManager_Default, translationId:string, type:"other"|"message", id:ODCheckerTranslationRegisterOtherIds_Default|ODCheckerTranslationRegisterMessageIds_Default|string){
super.quickTranslate(manager,translationId,type,id)
}
}
/**## ODCheckerFunctionManagerIds_Default `interface`
* This interface is a list of ids available in the `ODCheckerFunctionManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODCheckerFunctionManagerIds_Default {
"opendiscord:unused-options":api.ODCheckerFunction,
"opendiscord:unused-questions":api.ODCheckerFunction,
"opendiscord:dropdown-options":api.ODCheckerFunction
}
/**## ODCheckerFunctionManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODCheckerFunctionManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.checkers.functions`!
*/
export class ODCheckerFunctionManager_Default extends api.ODCheckerFunctionManager {
get<CheckerFunctionId extends keyof ODCheckerFunctionManagerIds_Default>(id:CheckerFunctionId): ODCheckerFunctionManagerIds_Default[CheckerFunctionId]
get(id:api.ODValidId): api.ODCheckerFunction|null
get(id:api.ODValidId): api.ODCheckerFunction|null {
return super.get(id)
}
remove<CheckerFunctionId extends keyof ODCheckerFunctionManagerIds_Default>(id:CheckerFunctionId): ODCheckerFunctionManagerIds_Default[CheckerFunctionId]
remove(id:api.ODValidId): api.ODCheckerFunction|null
remove(id:api.ODValidId): api.ODCheckerFunction|null {
return super.remove(id)
}
exists(id:keyof ODCheckerFunctionManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-206
View File
@@ -1,206 +0,0 @@
///////////////////////////////////////
//DEFAULT CLIENT MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW COMMANDS?
* - Register the command in loadAllSlashCommands() & loadAllTextCommands() in (./src/data/framework/commandLoader.ts)
* - Add autocomplete for the command in OD(Slash/Text)CommandManagerIds_Default in (./src/core/api/defaults/client.ts)
* - Add the command to the help menu in (./src/data/framework/helpMenuLoader.ts)
* - If required, new config variables should be added (incl. logs, dm-logs & permissions).
* - Update the Open Ticket Documentation.
* - If the command contains complex logic or can be executed from a button/dropdown, it should be placed inside an `ODAction`.
* - Check all files, test the bot carefully & try a lot of different scenario's with different settings.
*/
/**## ODClientManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODClientManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.client`!
*/
export class ODClientManager_Default extends api.ODClientManager {
declare slashCommands: ODSlashCommandManager_Default
declare textCommands: ODTextCommandManager_Default
declare contextMenus: ODContextMenuManager_Default
}
/**## ODSlashCommandManagerIds_Default `interface`
* This interface is a list of ids available in the `ODSlashCommandManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODSlashCommandManagerIds_Default {
"opendiscord:help":api.ODSlashCommand,
"opendiscord:panel":api.ODSlashCommand,
"opendiscord:ticket":api.ODSlashCommand,
"opendiscord:close":api.ODSlashCommand,
"opendiscord:delete":api.ODSlashCommand,
"opendiscord:reopen":api.ODSlashCommand,
"opendiscord:claim":api.ODSlashCommand,
"opendiscord:unclaim":api.ODSlashCommand,
"opendiscord:pin":api.ODSlashCommand,
"opendiscord:unpin":api.ODSlashCommand,
"opendiscord:move":api.ODSlashCommand,
"opendiscord:rename":api.ODSlashCommand,
"opendiscord:add":api.ODSlashCommand,
"opendiscord:remove":api.ODSlashCommand,
"opendiscord:blacklist":api.ODSlashCommand,
"opendiscord:stats":api.ODSlashCommand,
"opendiscord:clear":api.ODSlashCommand,
"opendiscord:autoclose":api.ODSlashCommand,
"opendiscord:autodelete":api.ODSlashCommand,
"opendiscord:topic":api.ODSlashCommand,
"opendiscord:priority":api.ODSlashCommand,
"opendiscord:transfer":api.ODSlashCommand,
}
/**## ODSlashCommandManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODSlashCommandManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.client.slashCommands`!
*/
export class ODSlashCommandManager_Default extends api.ODSlashCommandManager {
get<SlashCommandId extends keyof ODSlashCommandManagerIds_Default>(id:SlashCommandId): ODSlashCommandManagerIds_Default[SlashCommandId]
get(id:api.ODValidId): api.ODSlashCommand|null
get(id:api.ODValidId): api.ODSlashCommand|null {
return super.get(id)
}
remove<SlashCommandId extends keyof ODSlashCommandManagerIds_Default>(id:SlashCommandId): ODSlashCommandManagerIds_Default[SlashCommandId]
remove(id:api.ODValidId): api.ODSlashCommand|null
remove(id:api.ODValidId): api.ODSlashCommand|null {
return super.remove(id)
}
exists(id:keyof ODSlashCommandManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
onInteraction(commandName:keyof ODSlashCommandManagerIds_Default, callback:api.ODSlashCommandInteractionCallback): void
onInteraction(commandName:string|RegExp, callback:api.ODSlashCommandInteractionCallback): void
onInteraction(commandName:string|RegExp, callback:api.ODSlashCommandInteractionCallback): void {
return super.onInteraction(commandName,callback)
}
}
/**## ODTextCommandManagerIds_Default `interface`
* This interface is a list of ids available in the `ODTextCommandManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODTextCommandManagerIds_Default {
"opendiscord:dump":api.ODTextCommand,
"opendiscord:help":api.ODTextCommand,
"opendiscord:panel":api.ODTextCommand,
"opendiscord:close":api.ODTextCommand,
"opendiscord:delete":api.ODTextCommand,
"opendiscord:reopen":api.ODTextCommand,
"opendiscord:claim":api.ODTextCommand,
"opendiscord:unclaim":api.ODTextCommand,
"opendiscord:pin":api.ODTextCommand,
"opendiscord:unpin":api.ODTextCommand,
"opendiscord:move":api.ODTextCommand,
"opendiscord:rename":api.ODTextCommand,
"opendiscord:add":api.ODTextCommand,
"opendiscord:remove":api.ODTextCommand,
"opendiscord:blacklist-view":api.ODTextCommand,
"opendiscord:blacklist-add":api.ODTextCommand,
"opendiscord:blacklist-remove":api.ODTextCommand,
"opendiscord:blacklist-get":api.ODTextCommand,
"opendiscord:stats-global":api.ODTextCommand,
"opendiscord:stats-reset":api.ODTextCommand,
"opendiscord:stats-ticket":api.ODTextCommand,
"opendiscord:stats-user":api.ODTextCommand,
"opendiscord:clear":api.ODTextCommand,
"opendiscord:autoclose-disable":api.ODTextCommand,
"opendiscord:autoclose-enable":api.ODTextCommand,
"opendiscord:autodelete-disable":api.ODTextCommand,
"opendiscord:autodelete-enable":api.ODTextCommand,
"opendiscord:topic-set":api.ODTextCommand,
"opendiscord:priority-set":api.ODTextCommand,
"opendiscord:priority-get":api.ODTextCommand,
"opendiscord:transfer":api.ODTextCommand,
}
/**## ODTextCommandManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODTextCommandManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.client.textCommands`!
*/
export class ODTextCommandManager_Default extends api.ODTextCommandManager {
get<TextCommandId extends keyof ODTextCommandManagerIds_Default>(id:TextCommandId): ODTextCommandManagerIds_Default[TextCommandId]
get(id:api.ODValidId): api.ODTextCommand|null
get(id:api.ODValidId): api.ODTextCommand|null {
return super.get(id)
}
remove<TextCommandId extends keyof ODTextCommandManagerIds_Default>(id:TextCommandId): ODTextCommandManagerIds_Default[TextCommandId]
remove(id:api.ODValidId): api.ODTextCommand|null
remove(id:api.ODValidId): api.ODTextCommand|null {
return super.remove(id)
}
exists(id:keyof ODTextCommandManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
onInteraction(commandPrefix:string, commandName:string|RegExp, callback:api.ODTextCommandInteractionCallback): void {
return super.onInteraction(commandPrefix,commandName,callback)
}
}
/**## ODContextMenuManagerIds_Default `interface`
* This interface is a list of ids available in the `ODContextMenuManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODContextMenuManagerIds_Default {
//"opendiscord:test-menu":ODContextMenu
}
/**## ODContextMenuManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODContextMenuManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.client.contextMenus`!
*/
export class ODContextMenuManager_Default extends api.ODContextMenuManager {
get<ContextMenuId extends keyof ODContextMenuManagerIds_Default>(id:ContextMenuId): ODContextMenuManagerIds_Default[ContextMenuId]
get(id:api.ODValidId): api.ODContextMenu|null
get(id:api.ODValidId): api.ODContextMenu|null {
return super.get(id)
}
remove<ContextMenuId extends keyof ODContextMenuManagerIds_Default>(id:ContextMenuId): ODContextMenuManagerIds_Default[ContextMenuId]
remove(id:api.ODValidId): api.ODContextMenu|null
remove(id:api.ODValidId): api.ODContextMenu|null {
return super.remove(id)
}
exists(id:keyof ODContextMenuManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
onInteraction(menuName:keyof ODContextMenuManagerIds_Default, callback:api.ODContextMenuInteractionCallback): void
onInteraction(menuName:string|RegExp, callback:api.ODContextMenuInteractionCallback): void
onInteraction(menuName:string|RegExp, callback:api.ODContextMenuInteractionCallback): void {
return super.onInteraction(menuName,callback)
}
}
-56
View File
@@ -1,56 +0,0 @@
///////////////////////////////////////
//DEFAULT CODE MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODCodeManagerIds_Default `interface`
* This interface is a list of ids available in the `ODCodeManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODCodeManagerIds_Default {
"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,
}
/**## ODCodeManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODCodeManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.code`!
*/
export class ODCodeManager_Default extends api.ODCodeManager {
get<CodeId extends keyof ODCodeManagerIds_Default>(id:CodeId): ODCodeManagerIds_Default[CodeId]
get(id:api.ODValidId): api.ODCode|null
get(id:api.ODValidId): api.ODCode|null {
return super.get(id)
}
remove<CodeId extends keyof ODCodeManagerIds_Default>(id:CodeId): ODCodeManagerIds_Default[CodeId]
remove(id:api.ODValidId): api.ODCode|null
remove(id:api.ODValidId): api.ODCode|null {
return super.remove(id)
}
exists(id:keyof ODCodeManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-41
View File
@@ -1,41 +0,0 @@
///////////////////////////////////////
//DEFAULT CONSOLE MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODLiveStatusManagerIds_Default `interface`
* This interface is a list of ids available in the `ODLiveStatusManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODLiveStatusManagerIds_Default {
"opendiscord:default-djdj-dev":api.ODLiveStatusUrlSource
}
/**## ODLiveStatusManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODLiveStatusManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.livestatus`!
*/
export class ODLiveStatusManager_Default extends api.ODLiveStatusManager {
get<LiveStatusId extends keyof ODLiveStatusManagerIds_Default>(id:LiveStatusId): ODLiveStatusManagerIds_Default[LiveStatusId]
get(id:api.ODValidId): api.ODLiveStatusSource|null
get(id:api.ODValidId): api.ODLiveStatusSource|null {
return super.get(id)
}
remove<LiveStatusId extends keyof ODLiveStatusManagerIds_Default>(id:LiveStatusId): ODLiveStatusManagerIds_Default[LiveStatusId]
remove(id:api.ODValidId): api.ODLiveStatusSource|null
remove(id:api.ODValidId): api.ODLiveStatusSource|null {
return super.remove(id)
}
exists(id:keyof ODLiveStatusManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-41
View File
@@ -1,41 +0,0 @@
///////////////////////////////////////
//DEFAULT COOLDOWN MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODCooldownManagerIds_Default `interface`
* This interface is a list of ids available in the `ODCooldownManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODCooldownManagerIds_Default {
}
/**## ODCooldownManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODCooldownManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.cooldowns`!
*/
export class ODCooldownManager_Default extends api.ODCooldownManager {
get<CooldownId extends keyof ODCooldownManagerIds_Default>(id:CooldownId): ODCooldownManagerIds_Default[CooldownId]
get(id:api.ODValidId): api.ODCooldown<object>|null
get(id:api.ODValidId): api.ODCooldown<object>|null {
return super.get(id)
}
remove<CooldownId extends keyof ODCooldownManagerIds_Default>(id:CooldownId): ODCooldownManagerIds_Default[CooldownId]
remove(id:api.ODValidId): api.ODCooldown<object>|null
remove(id:api.ODValidId): api.ODCooldown<object>|null {
return super.remove(id)
}
exists(id:keyof ODCooldownManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-256
View File
@@ -1,256 +0,0 @@
///////////////////////////////////////
//DEFAULT DATABASE MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
import { ODTicketJson } from "../openticket/ticket"
import { ODOptionJson } from "../openticket/option"
/**## ODDatabaseManagerIds_Default `interface`
* This interface is a list of ids available in the `ODDatabaseManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODDatabaseManagerIds_Default {
"opendiscord:global":ODFormattedJsonDatabase_DefaultGlobal,
"opendiscord:stats":api.ODFormattedJsonDatabase,
"opendiscord:tickets":ODFormattedJsonDatabase_DefaultTickets,
"opendiscord:users":ODFormattedJsonDatabase_DefaultUsers,
"opendiscord:options":ODFormattedJsonDatabase_DefaultOptions,
}
/**## ODDatabaseManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODDatabaseManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.databases`!
*/
export class ODDatabaseManager_Default extends api.ODDatabaseManager {
get<DatabaseId extends keyof ODDatabaseManagerIds_Default>(id:DatabaseId): ODDatabaseManagerIds_Default[DatabaseId]
get(id:api.ODValidId): api.ODDatabase|null
get(id:api.ODValidId): api.ODDatabase|null {
return super.get(id)
}
remove<DatabaseId extends keyof ODDatabaseManagerIds_Default>(id:DatabaseId): ODDatabaseManagerIds_Default[DatabaseId]
remove(id:api.ODValidId): api.ODDatabase|null
remove(id:api.ODValidId): api.ODDatabase|null {
return super.remove(id)
}
exists(id:keyof ODDatabaseManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODFormattedJsonDatabaseIds_DefaultGlobal `type`
* This interface is a list of ids available in the `ODFormattedJsonDatabase_DefaultGlobal` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODFormattedJsonDatabaseIds_DefaultGlobal {
"opendiscord:panel-message":string,
"opendiscord:panel-update":string,
"opendiscord:option-suffix-counter":number,
"opendiscord:option-suffix-history":string[],
"opendiscord:last-version":string
}
/**## ODFormattedJsonDatabase_DefaultGlobal `default_class`
* This is a special class that adds type definitions & typescript to the ODFormattedJsonDatabase class.
* It doesn't add any extra features!
*
* This default class is made for the `global.json` database!
*/
export class ODFormattedJsonDatabase_DefaultGlobal extends api.ODFormattedJsonDatabase {
set<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultGlobal>(category:CategoryId, key:string, value:ODFormattedJsonDatabaseIds_DefaultGlobal[CategoryId]): api.ODOptionalPromise<boolean>
set(category:string, key:string, value:api.ODValidJsonType): api.ODOptionalPromise<boolean>
set(category:string, key:string, value:api.ODValidJsonType): api.ODOptionalPromise<boolean> {
return super.set(category,key,value)
}
get<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultGlobal>(category:CategoryId, key:string): api.ODOptionalPromise<ODFormattedJsonDatabaseIds_DefaultGlobal[CategoryId]|undefined>
get(category:string, key:string): api.ODOptionalPromise<api.ODValidJsonType|undefined>
get(category:string, key:string): api.ODOptionalPromise<api.ODValidJsonType|undefined> {
return super.get(category,key)
}
delete<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultGlobal>(category:CategoryId, key:string): api.ODOptionalPromise<boolean>
delete(category:string, key:string): api.ODOptionalPromise<boolean>
delete(category:string, key:string): api.ODOptionalPromise<boolean> {
return super.delete(category,key)
}
exists(category:keyof ODFormattedJsonDatabaseIds_DefaultGlobal, key:string): api.ODOptionalPromise<boolean>
exists(category:string, key:string): api.ODOptionalPromise<boolean>
exists(category:string, key:string): api.ODOptionalPromise<boolean> {
return super.exists(category,key)
}
getCategory<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultGlobal>(category:CategoryId): api.ODOptionalPromise<{key:string, value:ODFormattedJsonDatabaseIds_DefaultGlobal[CategoryId]}[]|undefined>
getCategory(category:string): api.ODOptionalPromise<{key:string, value:api.ODValidJsonType}[]|undefined>
getCategory(category:string): api.ODOptionalPromise<{key:string, value:api.ODValidJsonType}[]|undefined> {
return super.getCategory(category)
}
}
/**## ODFormattedJsonDatabaseIds_DefaultTickets `type`
* This interface is a list of ids available in the `ODDatabaseManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODFormattedJsonDatabaseIds_DefaultTickets {
"opendiscord:ticket":ODTicketJson
}
/**## ODFormattedJsonDatabase_DefaultTickets `default_class`
* This is a special class that adds type definitions & typescript to the ODFormattedJsonDatabase class.
* It doesn't add any extra features!
*
* This default class is made for the `tickets.json` database!
*/
export class ODFormattedJsonDatabase_DefaultTickets extends api.ODFormattedJsonDatabase {
set<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultTickets>(category:CategoryId, key:string, value:ODFormattedJsonDatabaseIds_DefaultTickets[CategoryId]): api.ODOptionalPromise<boolean>
set(category:string, key:string, value:api.ODValidJsonType): api.ODOptionalPromise<boolean>
set(category:string, key:string, value:api.ODValidJsonType): api.ODOptionalPromise<boolean> {
return super.set(category,key,value)
}
get<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultTickets>(category:CategoryId, key:string): api.ODOptionalPromise<ODFormattedJsonDatabaseIds_DefaultTickets[CategoryId]|undefined>
get(category:string, key:string): api.ODOptionalPromise<api.ODValidJsonType|undefined>
get(category:string, key:string): api.ODOptionalPromise<api.ODValidJsonType|undefined> {
return super.get(category,key)
}
delete<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultTickets>(category:CategoryId, key:string): api.ODOptionalPromise<boolean>
delete(category:string, key:string): api.ODOptionalPromise<boolean>
delete(category:string, key:string): api.ODOptionalPromise<boolean> {
return super.delete(category,key)
}
exists(category:keyof ODFormattedJsonDatabaseIds_DefaultTickets, key:string): api.ODOptionalPromise<boolean>
exists(category:string, key:string): api.ODOptionalPromise<boolean>
exists(category:string, key:string): api.ODOptionalPromise<boolean> {
return super.exists(category,key)
}
getCategory<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultTickets>(category:CategoryId): api.ODOptionalPromise<{key:string, value:ODFormattedJsonDatabaseIds_DefaultTickets[CategoryId]}[]|undefined>
getCategory(category:string): api.ODOptionalPromise<{key:string, value:api.ODValidJsonType}[]|undefined>
getCategory(category:string): api.ODOptionalPromise<{key:string, value:api.ODValidJsonType}[]|undefined> {
return super.getCategory(category)
}
}
/**## ODFormattedJsonDatabaseIds_DefaultUsers `type`
* This interface is a list of ids available in the `ODDatabaseManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODFormattedJsonDatabaseIds_DefaultUsers {
"opendiscord:blacklist":ODTicketJson
}
/**## ODFormattedJsonDatabase_DefaultUsers `default_class`
* This is a special class that adds type definitions & typescript to the ODFormattedJsonDatabase class.
* It doesn't add any extra features!
*
* This default class is made for the `users.json` database!
*/
export class ODFormattedJsonDatabase_DefaultUsers extends api.ODFormattedJsonDatabase {
set<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultUsers>(category:CategoryId, key:string, value:ODFormattedJsonDatabaseIds_DefaultUsers[CategoryId]): api.ODOptionalPromise<boolean>
set(category:string, key:string, value:api.ODValidJsonType): api.ODOptionalPromise<boolean>
set(category:string, key:string, value:api.ODValidJsonType): api.ODOptionalPromise<boolean> {
return super.set(category,key,value)
}
get<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultUsers>(category:CategoryId, key:string): api.ODOptionalPromise<ODFormattedJsonDatabaseIds_DefaultUsers[CategoryId]|undefined>
get(category:string, key:string): api.ODOptionalPromise<api.ODValidJsonType|undefined>
get(category:string, key:string): api.ODOptionalPromise<api.ODValidJsonType|undefined> {
return super.get(category,key)
}
delete<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultUsers>(category:CategoryId, key:string): api.ODOptionalPromise<boolean>
delete(category:string, key:string): api.ODOptionalPromise<boolean>
delete(category:string, key:string): api.ODOptionalPromise<boolean> {
return super.delete(category,key)
}
exists(category:keyof ODFormattedJsonDatabaseIds_DefaultUsers, key:string): api.ODOptionalPromise<boolean>
exists(category:string, key:string): api.ODOptionalPromise<boolean>
exists(category:string, key:string): api.ODOptionalPromise<boolean> {
return super.exists(category,key)
}
getCategory<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultUsers>(category:CategoryId): api.ODOptionalPromise<{key:string, value:ODFormattedJsonDatabaseIds_DefaultUsers[CategoryId]}[]|undefined>
getCategory(category:string): api.ODOptionalPromise<{key:string, value:api.ODValidJsonType}[]|undefined>
getCategory(category:string): api.ODOptionalPromise<{key:string, value:api.ODValidJsonType}[]|undefined> {
return super.getCategory(category)
}
}
/**## ODFormattedJsonDatabaseIds_DefaultOptions `type`
* This interface is a list of ids available in the `ODDatabaseManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODFormattedJsonDatabaseIds_DefaultOptions {
"opendiscord:used-option":ODOptionJson
}
/**## ODFormattedJsonDatabase_DefaultOptions `default_class`
* This is a special class that adds type definitions & typescript to the ODFormattedJsonDatabase class.
* It doesn't add any extra features!
*
* This default class is made for the `options.json` database!
*/
export class ODFormattedJsonDatabase_DefaultOptions extends api.ODFormattedJsonDatabase {
set<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultOptions>(category:CategoryId, key:string, value:ODFormattedJsonDatabaseIds_DefaultOptions[CategoryId]): api.ODOptionalPromise<boolean>
set(category:string, key:string, value:api.ODValidJsonType): api.ODOptionalPromise<boolean>
set(category:string, key:string, value:api.ODValidJsonType): api.ODOptionalPromise<boolean> {
return super.set(category,key,value)
}
get<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultOptions>(category:CategoryId, key:string): api.ODOptionalPromise<ODFormattedJsonDatabaseIds_DefaultOptions[CategoryId]|undefined>
get(category:string, key:string): api.ODOptionalPromise<api.ODValidJsonType|undefined>
get(category:string, key:string): api.ODOptionalPromise<api.ODValidJsonType|undefined> {
return super.get(category,key)
}
delete<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultOptions>(category:CategoryId, key:string): api.ODOptionalPromise<boolean>
delete(category:string, key:string): api.ODOptionalPromise<boolean>
delete(category:string, key:string): api.ODOptionalPromise<boolean> {
return super.delete(category,key)
}
exists(category:keyof ODFormattedJsonDatabaseIds_DefaultOptions, key:string): api.ODOptionalPromise<boolean>
exists(category:string, key:string): api.ODOptionalPromise<boolean>
exists(category:string, key:string): api.ODOptionalPromise<boolean> {
return super.exists(category,key)
}
getCategory<CategoryId extends keyof ODFormattedJsonDatabaseIds_DefaultOptions>(category:CategoryId): api.ODOptionalPromise<{key:string, value:ODFormattedJsonDatabaseIds_DefaultOptions[CategoryId]}[]|undefined>
getCategory(category:string): api.ODOptionalPromise<{key:string, value:api.ODValidJsonType}[]|undefined>
getCategory(category:string): api.ODOptionalPromise<{key:string, value:api.ODValidJsonType}[]|undefined> {
return super.getCategory(category)
}
}
-384
View File
@@ -1,384 +0,0 @@
///////////////////////////////////////
//DEFAULT EVENT MODULE
///////////////////////////////////////
//BASE MODULES
import * as api from "@open-discord-bots/framework/api"
import * as discord from "discord.js"
//DEFAULT MODULES
import { ODPluginClassManager_Default, ODPluginManager_Default } from "./plugin"
import { ODConfigManager_Default} from "./config"
import { ODDatabaseManager_Default } from "./database"
import { ODFlagManager_Default } from "./flag"
import { ODSessionManager_Default } from "./session"
import { ODLanguageManager_Default } from "./language"
import { ODCheckerFunctionManager_Default, ODCheckerManager_Default, ODCheckerRenderer_Default, ODCheckerTranslationRegister_Default } from "./checker"
import { ODClientManager_Default, ODContextMenuManager_Default, ODSlashCommandManager_Default, ODTextCommandManager_Default } from "./client"
import { ODBuilderManager_Default, ODButtonManager_Default, ODDropdownManager_Default, ODEmbedManager_Default, ODFileManager_Default, ODMessageManager_Default, ODModalManager_Default } from "./builder"
import { ODAutocompleteResponderManager_Default, ODButtonResponderManager_Default, ODCommandResponderManager_Default, ODContextMenuResponderManager_Default, ODDropdownResponderManager_Default, ODModalResponderManager_Default, ODResponderManager_Default } from "./responder"
import { ODActionManager_Default } from "./action"
import { ODPermissionManager_Default } from "./permission"
import { ODHelpMenuManager_Default } from "./helpmenu"
import { ODStatsManager_Default } from "./stat"
import { ODCodeManager_Default } from "./code"
import { ODCooldownManager_Default } from "./cooldown"
import { ODPostManager_Default } from "./post"
import { ODVerifyBarManager_Default } from "./verifybar"
import { ODStartScreenManager_Default } from "./startscreen"
import { ODLiveStatusManager_Default } from "./console"
import { ODProgressBarManager_Default, ODProgressBarRendererManager_Default } from "./progressbar"
//OPEN TICKET MODULES
import { ODOptionManager, ODTicketOption } from "../openticket/option"
import { ODPanel, ODPanelManager } from "../openticket/panel"
import { ODTicket, ODTicketClearFilter, ODTicketManager } from "../openticket/ticket"
import { ODQuestionManager } from "../openticket/question"
import { ODBlacklistManager } from "../openticket/blacklist"
import { ODTranscriptManager_Default } from "../openticket/transcript"
import { ODRole, ODRoleManager } from "../openticket/role"
import { ODPriorityLevel, ODPriorityManager_Default } from "../openticket/priority"
/**## ODEventIds_Default `interface`
* This interface is a list of ids available in the `ODEvent_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODEventIds_Default {
//error handling
"onErrorHandling": ODEvent_Default<(error:Error, origin:NodeJS.UncaughtExceptionOrigin) => api.ODPromiseVoid>
"afterErrorHandling": ODEvent_Default<(error:Error, origin:NodeJS.UncaughtExceptionOrigin, message:api.ODError) => api.ODPromiseVoid>
//plugins
"afterPluginsLoaded": ODEvent_Default<(plugins:ODPluginManager_Default) => api.ODPromiseVoid>
"onPluginClassLoad": ODEvent_Default<(classes:ODPluginClassManager_Default, plugins:ODPluginManager_Default) => api.ODPromiseVoid>
"afterPluginClassesLoaded": ODEvent_Default<(classes:ODPluginClassManager_Default, plugins:ODPluginManager_Default) => api.ODPromiseVoid>
//flags
"onFlagLoad": ODEvent_Default<(flags:ODFlagManager_Default) => api.ODPromiseVoid>
"afterFlagsLoaded": ODEvent_Default<(flags:ODFlagManager_Default) => api.ODPromiseVoid>
"onFlagInit": ODEvent_Default<(flags:ODFlagManager_Default) => api.ODPromiseVoid>
"afterFlagsInitiated": ODEvent_Default<(flags:ODFlagManager_Default) => api.ODPromiseVoid>
//progress bars
"onProgressBarRendererLoad": ODEvent_Default<(renderers:ODProgressBarRendererManager_Default) => api.ODPromiseVoid>
"afterProgressBarRenderersLoaded": ODEvent_Default<(renderers:ODProgressBarRendererManager_Default) => api.ODPromiseVoid>
"onProgressBarLoad": ODEvent_Default<(progressbars:ODProgressBarManager_Default) => api.ODPromiseVoid>
"afterProgressBarsLoaded": ODEvent_Default<(progressbars:ODProgressBarManager_Default) => api.ODPromiseVoid>
//configs
"onConfigLoad": ODEvent_Default<(configs:ODConfigManager_Default) => api.ODPromiseVoid>
"afterConfigsLoaded": ODEvent_Default<(configs:ODConfigManager_Default) => api.ODPromiseVoid>
"onConfigInit": ODEvent_Default<(configs:ODConfigManager_Default) => api.ODPromiseVoid>
"afterConfigsInitiated": ODEvent_Default<(configs:ODConfigManager_Default) => api.ODPromiseVoid>
//databases
"onDatabaseLoad": ODEvent_Default<(databases:ODDatabaseManager_Default) => api.ODPromiseVoid>
"afterDatabasesLoaded": ODEvent_Default<(databases:ODDatabaseManager_Default) => api.ODPromiseVoid>
"onDatabaseInit": ODEvent_Default<(databases:ODDatabaseManager_Default) => api.ODPromiseVoid>
"afterDatabasesInitiated": ODEvent_Default<(databases:ODDatabaseManager_Default) => api.ODPromiseVoid>
//languages
"onLanguageLoad": ODEvent_Default<(languages:ODLanguageManager_Default) => api.ODPromiseVoid>
"afterLanguagesLoaded": ODEvent_Default<(languages:ODLanguageManager_Default) => api.ODPromiseVoid>
"onLanguageInit": ODEvent_Default<(languages:ODLanguageManager_Default) => api.ODPromiseVoid>
"afterLanguagesInitiated": ODEvent_Default<(languages:ODLanguageManager_Default) => api.ODPromiseVoid>
"onLanguageSelect": ODEvent_Default<(languages:ODLanguageManager_Default) => api.ODPromiseVoid>
"afterLanguagesSelected": ODEvent_Default<(main:api.ODLanguage|null, backup:api.ODLanguage|null, languages:ODLanguageManager_Default) => api.ODPromiseVoid>
//sessions
"onSessionLoad": ODEvent_Default<(languages:ODSessionManager_Default) => api.ODPromiseVoid>
"afterSessionsLoaded": ODEvent_Default<(languages:ODSessionManager_Default) => api.ODPromiseVoid>
//config checkers
"onCheckerLoad": ODEvent_Default<(checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"afterCheckersLoaded": ODEvent_Default<(checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"onCheckerFunctionLoad": ODEvent_Default<(functions:ODCheckerFunctionManager_Default, checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"afterCheckerFunctionsLoaded": ODEvent_Default<(functions:ODCheckerFunctionManager_Default, checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"onCheckerExecute": ODEvent_Default<(checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"afterCheckersExecuted": ODEvent_Default<(result:api.ODCheckerResult, checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"onCheckerTranslationLoad": ODEvent_Default<(translations:ODCheckerTranslationRegister_Default, enabled:boolean, checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"afterCheckerTranslationsLoaded": ODEvent_Default<(translations:ODCheckerTranslationRegister_Default, checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"onCheckerRender": ODEvent_Default<(renderer:ODCheckerRenderer_Default, checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"afterCheckersRendered": ODEvent_Default<(renderer:ODCheckerRenderer_Default, checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
"onCheckerQuit": ODEvent_Default<(checkers:ODCheckerManager_Default) => api.ODPromiseVoid>
//plugin loading before client
"onPluginBeforeClientLoad": ODEvent_Default<() => api.ODPromiseVoid>,
"afterPluginBeforeClientLoaded": ODEvent_Default<() => api.ODPromiseVoid>,
//client configuration
"onClientLoad": ODEvent_Default<(client:ODClientManager_Default) => api.ODPromiseVoid>
"afterClientLoaded": ODEvent_Default<(client:ODClientManager_Default) => api.ODPromiseVoid>
"onClientInit": ODEvent_Default<(client:ODClientManager_Default) => api.ODPromiseVoid>
"afterClientInitiated": ODEvent_Default<(client:ODClientManager_Default) => api.ODPromiseVoid>
"onClientReady": ODEvent_Default<(client:ODClientManager_Default) => api.ODPromiseVoid>
"afterClientReady": ODEvent_Default<(client:ODClientManager_Default) => api.ODPromiseVoid>
"onClientActivityLoad": ODEvent_Default<(activity:api.ODClientActivityManager, client:ODClientManager_Default) => api.ODPromiseVoid>
"afterClientActivityLoaded": ODEvent_Default<(activity:api.ODClientActivityManager, client:ODClientManager_Default) => api.ODPromiseVoid>
"onClientActivityInit": ODEvent_Default<(activity:api.ODClientActivityManager, client:ODClientManager_Default) => api.ODPromiseVoid>
"afterClientActivityInitiated": ODEvent_Default<(activity:api.ODClientActivityManager, client:ODClientManager_Default) => api.ODPromiseVoid>
//priority levels
"onPriorityLoad": ODEvent_Default<(priorities:ODPriorityManager_Default) => api.ODPromiseVoid>
"afterPrioritiesLoaded": ODEvent_Default<(priorities:ODPriorityManager_Default) => api.ODPromiseVoid>
//client slash commands
"onSlashCommandLoad": ODEvent_Default<(slash:ODSlashCommandManager_Default, client:ODClientManager_Default) => api.ODPromiseVoid>
"afterSlashCommandsLoaded": ODEvent_Default<(slash:ODSlashCommandManager_Default, client:ODClientManager_Default) => api.ODPromiseVoid>
"onSlashCommandRegister": ODEvent_Default<(slash:ODSlashCommandManager_Default, client:ODClientManager_Default) => api.ODPromiseVoid>
"afterSlashCommandsRegistered": ODEvent_Default<(slash:ODSlashCommandManager_Default, client:ODClientManager_Default) => api.ODPromiseVoid>
//client context menus
"onContextMenuLoad": ODEvent_Default<(menu:ODContextMenuManager_Default, client:ODClientManager_Default) => api.ODPromiseVoid>
"afterContextMenusLoaded": ODEvent_Default<(menu:ODContextMenuManager_Default, client:ODClientManager_Default) => api.ODPromiseVoid>
"onContextMenuRegister": ODEvent_Default<(menu:ODContextMenuManager_Default, client:ODClientManager_Default) => api.ODPromiseVoid>
"afterContextMenusRegistered": ODEvent_Default<(menu:ODContextMenuManager_Default, client:ODClientManager_Default) => api.ODPromiseVoid>
//client text commands
"onTextCommandLoad": ODEvent_Default<(text:ODTextCommandManager_Default, client:ODClientManager_Default,) => api.ODPromiseVoid>
"afterTextCommandsLoaded": ODEvent_Default<(text:ODTextCommandManager_Default, client:ODClientManager_Default) => api.ODPromiseVoid>
//plugin loading before managers
"onPluginBeforeManagerLoad": ODEvent_Default<() => api.ODPromiseVoid>,
"afterPluginBeforeManagerLoaded": ODEvent_Default<() => api.ODPromiseVoid>,
//questions
"onQuestionLoad": ODEvent_Default<(questions:ODQuestionManager) => api.ODPromiseVoid>
"afterQuestionsLoaded": ODEvent_Default<(questions:ODQuestionManager) => api.ODPromiseVoid>
//options
"onOptionLoad": ODEvent_Default<(options:ODOptionManager) => api.ODPromiseVoid>
"afterOptionsLoaded": ODEvent_Default<(options:ODOptionManager) => api.ODPromiseVoid>
//panels
"onPanelLoad": ODEvent_Default<(panels:ODPanelManager) => api.ODPromiseVoid>
"afterPanelsLoaded": ODEvent_Default<(panels:ODPanelManager) => api.ODPromiseVoid>
"onPanelSpawn": ODEvent_Default<(panel:ODPanel) => api.ODPromiseVoid>
"afterPanelSpawned": ODEvent_Default<(panel:ODPanel) => api.ODPromiseVoid>
//tickets
"onTicketLoad": ODEvent_Default<(tickets:ODTicketManager) => api.ODPromiseVoid>
"afterTicketsLoaded": ODEvent_Default<(tickets:ODTicketManager) => api.ODPromiseVoid>
//ticket creation
"onTicketChannelCreation": ODEvent_Default<(option:ODTicketOption, user:discord.User) => api.ODPromiseVoid>
"afterTicketChannelCreated": ODEvent_Default<(option:ODTicketOption, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"onTicketChannelDeletion": ODEvent_Default<(ticket:ODTicket, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"afterTicketChannelDeleted": ODEvent_Default<(ticket:ODTicket, user:discord.User) => api.ODPromiseVoid>
"onTicketPermissionsCreated": ODEvent_Default<(option:ODTicketOption, permissions:ODPermissionManager_Default, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"afterTicketPermissionsCreated": ODEvent_Default<(option:ODTicketOption, permissions:ODPermissionManager_Default, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"onTicketMainMessageCreated": ODEvent_Default<(ticket:ODTicket, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"afterTicketMainMessageCreated": ODEvent_Default<(ticket:ODTicket, message:discord.Message, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
//ticket actions
"onTicketCreate": ODEvent_Default<(creator:discord.User) => api.ODPromiseVoid>
"afterTicketCreated": ODEvent_Default<(ticket:ODTicket, creator:discord.User, channel:discord.GuildTextBasedChannel) => api.ODPromiseVoid>
"onTicketClose": ODEvent_Default<(ticket:ODTicket, closer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketClosed": ODEvent_Default<(ticket:ODTicket, closer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketReopen": ODEvent_Default<(ticket:ODTicket, reopener:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketReopened": ODEvent_Default<(ticket:ODTicket, reopener:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketDelete": ODEvent_Default<(ticket:ODTicket, deleter:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketDeleted": ODEvent_Default<(ticket:ODTicket, deleter:discord.User, reason:string|null) => api.ODPromiseVoid>
"onTicketMove": ODEvent_Default<(ticket:ODTicket, mover:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketMoved": ODEvent_Default<(ticket:ODTicket, mover:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketClaim": ODEvent_Default<(ticket:ODTicket, claimer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketClaimed": ODEvent_Default<(ticket:ODTicket, claimer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketUnclaim": ODEvent_Default<(ticket:ODTicket, unclaimer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketUnclaimed": ODEvent_Default<(ticket:ODTicket, unclaimer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketPin": ODEvent_Default<(ticket:ODTicket, pinner:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketPinned": ODEvent_Default<(ticket:ODTicket, pinner:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketUnpin": ODEvent_Default<(ticket:ODTicket, unpinner:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketUnpinned": ODEvent_Default<(ticket:ODTicket, unpinner:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketUserAdd": ODEvent_Default<(ticket:ODTicket, adder:discord.User, user:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketUserAdded": ODEvent_Default<(ticket:ODTicket, adder:discord.User, user:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketUserRemove": ODEvent_Default<(ticket:ODTicket, remover:discord.User, user:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketUserRemoved": ODEvent_Default<(ticket:ODTicket, remover:discord.User, user:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketRename": ODEvent_Default<(ticket:ODTicket, renamer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketRenamed": ODEvent_Default<(ticket:ODTicket, renamer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketsClear": ODEvent_Default<(tickets:ODTicket[], clearer:discord.User, channel:discord.GuildTextBasedChannel, filter:ODTicketClearFilter) => api.ODPromiseVoid>
"afterTicketsCleared": ODEvent_Default<(tickets:ODTicket[], clearer:discord.User, channel:discord.GuildTextBasedChannel, filter:ODTicketClearFilter) => api.ODPromiseVoid>
"onTicketTopicChange": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldTopic:string, newTopic:string) => api.ODPromiseVoid>
"afterTicketTopicChanged": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldTopic:string, newTopic:string) => api.ODPromiseVoid>
"onTicketPriorityChange": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldPriority:ODPriorityLevel, newPriority:ODPriorityLevel, reason:string|null) => api.ODPromiseVoid>
"afterTicketPriorityChanged": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldPriority:ODPriorityLevel, newPriority:ODPriorityLevel, reason:string|null) => api.ODPromiseVoid>
"onTicketTransfer": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldCreator:discord.User, newCreator:discord.User, reason:string|null) => api.ODPromiseVoid>
"afterTicketTransferred": ODEvent_Default<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldCreator:discord.User, newCreator:discord.User, reason:string|null) => api.ODPromiseVoid>
//roles
"onRoleLoad": ODEvent_Default<(roles:ODRoleManager) => api.ODPromiseVoid>
"afterRolesLoaded": ODEvent_Default<(roles:ODRoleManager) => api.ODPromiseVoid>
"onRoleUpdate": ODEvent_Default<(user:discord.User,role:ODRole) => api.ODPromiseVoid>
"afterRolesUpdated": ODEvent_Default<(user:discord.User,role:ODRole) => api.ODPromiseVoid>
//blacklist
"onBlacklistLoad": ODEvent_Default<(blacklist:ODBlacklistManager) => api.ODPromiseVoid>
"afterBlacklistLoaded": ODEvent_Default<(blacklist:ODBlacklistManager) => api.ODPromiseVoid>
//transcripts
"onTranscriptCompilerLoad": ODEvent_Default<(transcripts:ODTranscriptManager_Default) => api.ODPromiseVoid>
"afterTranscriptCompilersLoaded": ODEvent_Default<(transcripts:ODTranscriptManager_Default) => api.ODPromiseVoid>
"onTranscriptHistoryLoad": ODEvent_Default<(transcripts:ODTranscriptManager_Default) => api.ODPromiseVoid>
"afterTranscriptHistoryLoaded": ODEvent_Default<(transcripts:ODTranscriptManager_Default) => api.ODPromiseVoid>
//transcript creation
"onTranscriptCreate": ODEvent_Default<(transcripts:ODTranscriptManager_Default,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"afterTranscriptCreated": ODEvent_Default<(transcripts:ODTranscriptManager_Default,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"onTranscriptInit": ODEvent_Default<(transcripts:ODTranscriptManager_Default,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"afterTranscriptInitiated": ODEvent_Default<(transcripts:ODTranscriptManager_Default,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"onTranscriptCompile": ODEvent_Default<(transcripts:ODTranscriptManager_Default,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"afterTranscriptCompiled": ODEvent_Default<(transcripts:ODTranscriptManager_Default,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"onTranscriptReady": ODEvent_Default<(transcripts:ODTranscriptManager_Default,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"afterTranscriptReady": ODEvent_Default<(transcripts:ODTranscriptManager_Default,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
//plugin loading before builders
"onPluginBeforeBuilderLoad": ODEvent_Default<() => api.ODPromiseVoid>,
"afterPluginBeforeBuilderLoaded": ODEvent_Default<() => api.ODPromiseVoid>,
//builders
"onButtonBuilderLoad": ODEvent_Default<(buttons:ODButtonManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterButtonBuildersLoaded": ODEvent_Default<(buttons:ODButtonManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onDropdownBuilderLoad": ODEvent_Default<(dropdowns:ODDropdownManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterDropdownBuildersLoaded": ODEvent_Default<(dropdowns:ODDropdownManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onFileBuilderLoad": ODEvent_Default<(files:ODFileManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterFileBuildersLoaded": ODEvent_Default<(files:ODFileManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onEmbedBuilderLoad": ODEvent_Default<(embeds:ODEmbedManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterEmbedBuildersLoaded": ODEvent_Default<(embeds:ODEmbedManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onMessageBuilderLoad": ODEvent_Default<(messages:ODMessageManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterMessageBuildersLoaded": ODEvent_Default<(messages:ODMessageManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onModalBuilderLoad": ODEvent_Default<(modals:ODModalManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterModalBuildersLoaded": ODEvent_Default<(modals:ODModalManager_Default, builders:ODBuilderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
//plugin loading before responders
"onPluginBeforeResponderLoad": ODEvent_Default<() => api.ODPromiseVoid>,
"afterPluginBeforeResponderLoaded": ODEvent_Default<() => api.ODPromiseVoid>,
//responders
"onCommandResponderLoad": ODEvent_Default<(commands:ODCommandResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterCommandRespondersLoaded": ODEvent_Default<(commands:ODCommandResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onButtonResponderLoad": ODEvent_Default<(buttons:ODButtonResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterButtonRespondersLoaded": ODEvent_Default<(buttons:ODButtonResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onDropdownResponderLoad": ODEvent_Default<(dropdowns:ODDropdownResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterDropdownRespondersLoaded": ODEvent_Default<(dropdowns:ODDropdownResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onModalResponderLoad": ODEvent_Default<(modals:ODModalResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterModalRespondersLoaded": ODEvent_Default<(modals:ODModalResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onContextMenuResponderLoad": ODEvent_Default<(menus:ODContextMenuResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterContextMenuRespondersLoaded": ODEvent_Default<(menus:ODContextMenuResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"onAutocompleteResponderLoad": ODEvent_Default<(autocomplete:ODAutocompleteResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterAutocompleteRespondersLoaded": ODEvent_Default<(autocomplete:ODAutocompleteResponderManager_Default, responders:ODResponderManager_Default, actions:ODActionManager_Default) => api.ODPromiseVoid>
//plugin loading before finalizations
"onPluginBeforeFinalizationLoad": ODEvent_Default<() => api.ODPromiseVoid>,
"afterPluginBeforeFinalizationLoaded": ODEvent_Default<() => api.ODPromiseVoid>,
//actions
"onActionLoad": ODEvent_Default<(actions:ODActionManager_Default) => api.ODPromiseVoid>
"afterActionsLoaded": ODEvent_Default<(actions:ODActionManager_Default) => api.ODPromiseVoid>
//verifybars
"onVerifyBarLoad": ODEvent_Default<(verifybars:ODVerifyBarManager_Default) => api.ODPromiseVoid>
"afterVerifyBarsLoaded": ODEvent_Default<(verifybars:ODVerifyBarManager_Default) => api.ODPromiseVoid>
//permissions
"onPermissionLoad": ODEvent_Default<(permissions:ODPermissionManager_Default) => api.ODPromiseVoid>
"afterPermissionsLoaded": ODEvent_Default<(permissions:ODPermissionManager_Default) => api.ODPromiseVoid>
//posts
"onPostLoad": ODEvent_Default<(posts:ODPostManager_Default) => api.ODPromiseVoid>
"afterPostsLoaded": ODEvent_Default<(posts:ODPostManager_Default) => api.ODPromiseVoid>
"onPostInit": ODEvent_Default<(posts:ODPostManager_Default) => api.ODPromiseVoid>
"afterPostsInitiated": ODEvent_Default<(posts:ODPostManager_Default) => api.ODPromiseVoid>
//cooldowns
"onCooldownLoad": ODEvent_Default<(cooldowns:ODCooldownManager_Default) => api.ODPromiseVoid>
"afterCooldownsLoaded": ODEvent_Default<(cooldowns:ODCooldownManager_Default) => api.ODPromiseVoid>
"onCooldownInit": ODEvent_Default<(cooldowns:ODCooldownManager_Default) => api.ODPromiseVoid>
"afterCooldownsInitiated": ODEvent_Default<(cooldowns:ODCooldownManager_Default) => api.ODPromiseVoid>
//help menu
"onHelpMenuCategoryLoad": ODEvent_Default<(menu:ODHelpMenuManager_Default) => api.ODPromiseVoid>
"afterHelpMenuCategoriesLoaded": ODEvent_Default<(menu:ODHelpMenuManager_Default) => api.ODPromiseVoid>
"onHelpMenuComponentLoad": ODEvent_Default<(menu:ODHelpMenuManager_Default) => api.ODPromiseVoid>
"afterHelpMenuComponentsLoaded": ODEvent_Default<(menu:ODHelpMenuManager_Default) => api.ODPromiseVoid>
//stats
"onStatScopeLoad": ODEvent_Default<(stats:ODStatsManager_Default) => api.ODPromiseVoid>
"afterStatScopesLoaded": ODEvent_Default<(stats:ODStatsManager_Default) => api.ODPromiseVoid>
"onStatLoad": ODEvent_Default<(stats:ODStatsManager_Default) => api.ODPromiseVoid>
"afterStatsLoaded": ODEvent_Default<(stats:ODStatsManager_Default) => api.ODPromiseVoid>
"onStatInit": ODEvent_Default<(stats:ODStatsManager_Default) => api.ODPromiseVoid>
"afterStatsInitiated": ODEvent_Default<(stats:ODStatsManager_Default) => api.ODPromiseVoid>
//plugin loading before code
"onPluginBeforeCodeLoad": ODEvent_Default<() => api.ODPromiseVoid>,
"afterPluginBeforeCodeLoaded": ODEvent_Default<() => api.ODPromiseVoid>,
//code
"onCodeLoad": ODEvent_Default<(code:ODCodeManager_Default) => api.ODPromiseVoid>
"afterCodeLoaded": ODEvent_Default<(code:ODCodeManager_Default) => api.ODPromiseVoid>
"onCodeExecute": ODEvent_Default<(code:ODCodeManager_Default) => api.ODPromiseVoid>
"afterCodeExecuted": ODEvent_Default<(code:ODCodeManager_Default) => api.ODPromiseVoid>
//livestatus
"onLiveStatusSourceLoad": ODEvent_Default<(livestatus:ODLiveStatusManager_Default) => api.ODPromiseVoid>
"afterLiveStatusSourcesLoaded": ODEvent_Default<(livestatus:ODLiveStatusManager_Default) => api.ODPromiseVoid>
//startscreen
"onStartScreenLoad": ODEvent_Default<(startscreen:ODStartScreenManager_Default) => api.ODPromiseVoid>
"afterStartScreensLoaded": ODEvent_Default<(startscreen:ODStartScreenManager_Default) => api.ODPromiseVoid>
"onStartScreenRender": ODEvent_Default<(startscreen:ODStartScreenManager_Default) => api.ODPromiseVoid>
"afterStartScreensRendered": ODEvent_Default<(startscreen:ODStartScreenManager_Default) => api.ODPromiseVoid>
//ready
"beforeReadyForUsage": ODEvent_Default<() => api.ODPromiseVoid>
"onReadyForUsage": ODEvent_Default<() => api.ODPromiseVoid>
}
/**## ODEventManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODEvent class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.events`!
*/
export class ODEventManager_Default extends api.ODEventManager {
get<StartScreenId extends keyof ODEventIds_Default>(id:StartScreenId): ODEventIds_Default[StartScreenId]
get(id:api.ODValidId): api.ODEvent|null
get(id:api.ODValidId): api.ODEvent|null {
return super.get(id)
}
remove<StartScreenId extends keyof ODEventIds_Default>(id:StartScreenId): ODEventIds_Default[StartScreenId]
remove(id:api.ODValidId): api.ODEvent|null
remove(id:api.ODValidId): api.ODEvent|null {
return super.remove(id)
}
exists(id:keyof ODEventIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODEventManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODEvent class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.events`!
*/
export class ODEvent_Default<Callback extends ((...args:any) => api.ODPromiseVoid)> extends api.ODEvent {
listen(callback:Callback): void {
return super.listen(callback)
}
listenOnce(callback:Callback): void {
return super.listenOnce(callback)
}
wait(): Promise<Parameters<Callback>>
wait(): Promise<any[]> {
return super.wait()
}
emit(params:Parameters<Callback>): Promise<void> {
return super.emit(params)
}
}
-56
View File
@@ -1,56 +0,0 @@
///////////////////////////////////////
//DEFAULT PROCESS MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODFlagManagerIds_Default `interface`
* This interface is a list of ids available in the `ODFlagManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODFlagManagerIds_Default {
"opendiscord:no-migration":api.ODFlag,
"opendiscord:dev-config":api.ODFlag,
"opendiscord:dev-database":api.ODFlag,
"opendiscord:debug":api.ODFlag,
"opendiscord:crash":api.ODFlag,
"opendiscord:no-transcripts":api.ODFlag,
"opendiscord:no-checker":api.ODFlag,
"opendiscord:checker":api.ODFlag,
"opendiscord:no-easter":api.ODFlag,
"opendiscord:no-plugins":api.ODFlag,
"opendiscord:soft-plugins":api.ODFlag,
"opendiscord:force-slash-update":api.ODFlag,
"opendiscord:no-compile":api.ODFlag,
"opendiscord:compile-only":api.ODFlag,
"opendiscord:silent":api.ODFlag,
"opendiscord:cli":api.ODFlag,
}
/**## ODFlagManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODFlagManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.flags`!
*/
export class ODFlagManager_Default extends api.ODFlagManager {
get<FlagId extends keyof ODFlagManagerIds_Default>(id:FlagId): ODFlagManagerIds_Default[FlagId]
get(id:api.ODValidId): api.ODFlag|null
get(id:api.ODValidId): api.ODFlag|null {
return super.get(id)
}
remove<FlagId extends keyof ODFlagManagerIds_Default>(id:FlagId): ODFlagManagerIds_Default[FlagId]
remove(id:api.ODValidId): api.ODFlag|null
remove(id:api.ODValidId): api.ODFlag|null {
return super.remove(id)
}
exists(id:keyof ODFlagManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-337
View File
@@ -1,337 +0,0 @@
///////////////////////////////////////
//DEFAULT HELP MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW COMMANDS?
* - Register the command in loadAllSlashCommands() & loadAllTextCommands() in (./src/data/framework/commandLoader.ts)
* - Add autocomplete for the command in OD(Slash/Text)CommandManagerIds_Default in (./src/core/api/defaults/client.ts)
* - Add the command to the help menu in (./src/data/framework/helpMenuLoader.ts)
* - If required, new config variables should be added (incl. logs, dm-logs & permissions).
* - Update the Open Ticket Documentation.
* - If the command contains complex logic or can be executed from a button/dropdown, it should be placed inside an `ODAction`.
* - Check all files, test the bot carefully & try a lot of different scenario's with different settings.
*/
/**## ODHelpMenuManagerIds_Default `interface`
* This interface is a list of ids available in the `ODHelpMenuManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODHelpMenuManagerIds_Default {
"opendiscord:general":ODHelpMenuCategory_DefaultGeneral,
"opendiscord:ticket-basic":ODHelpMenuCategory_DefaultTicketBasic,
"opendiscord:ticket-advanced":ODHelpMenuCategory_DefaultTicketAdvanced,
"opendiscord:ticket-user":ODHelpMenuCategory_DefaultTicketUser,
"opendiscord:admin":ODHelpMenuCategory_DefaultAdmin,
"opendiscord:advanced":ODHelpMenuCategory_DefaultAdvanced,
"opendiscord:extra":ODHelpMenuCategory_DefaultExtra
}
/**## ODHelpMenuManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.helpmenu`!
*/
export class ODHelpMenuManager_Default extends api.ODHelpMenuManager {
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerIds_Default>(id:HelpMenuCategoryId): ODHelpMenuManagerIds_Default[HelpMenuCategoryId]
get(id:api.ODValidId): api.ODHelpMenuCategory|null
get(id:api.ODValidId): api.ODHelpMenuCategory|null {
return super.get(id)
}
remove<HelpMenuCategoryId extends keyof ODHelpMenuManagerIds_Default>(id:HelpMenuCategoryId): ODHelpMenuManagerIds_Default[HelpMenuCategoryId]
remove(id:api.ODValidId): api.ODHelpMenuCategory|null
remove(id:api.ODValidId): api.ODHelpMenuCategory|null {
return super.remove(id)
}
exists(id:keyof ODHelpMenuManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODHelpMenuManagerCategoryIds_DefaultGeneral `type`
* This interface is a list of ids available in the `ODHelpMenuCategory_DefaultGeneral` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODHelpMenuManagerCategoryIds_DefaultGeneral {
"opendiscord:help":api.ODHelpMenuCommandComponent,
"opendiscord:ticket":api.ODHelpMenuCommandComponent|null
}
/**## ODHelpMenuCategory_DefaultGeneral `default_class`
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:general` category in `opendiscord.helpmenu`!
*/
export class ODHelpMenuCategory_DefaultGeneral extends api.ODHelpMenuCategory {
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultGeneral>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultGeneral[HelpMenuCategoryId]
get(id:api.ODValidId): api.ODHelpMenuComponent|null
get(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.get(id)
}
remove<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultGeneral>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultGeneral[HelpMenuCategoryId]
remove(id:api.ODValidId): api.ODHelpMenuComponent|null
remove(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.remove(id)
}
exists(id:keyof ODHelpMenuManagerCategoryIds_DefaultGeneral): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODHelpMenuManagerCategoryIds_DefaultTicketBasic `type`
* This interface is a list of ids available in the `ODHelpMenuCategory_DefaultTicketBasic` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODHelpMenuManagerCategoryIds_DefaultTicketBasic {
"opendiscord:close":api.ODHelpMenuCommandComponent,
"opendiscord:delete":api.ODHelpMenuCommandComponent,
"opendiscord:reopen":api.ODHelpMenuCommandComponent
}
/**## ODHelpMenuCategory_DefaultTicketBasic `default_class`
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:ticket` category in `opendiscord.helpmenu`!
*/
export class ODHelpMenuCategory_DefaultTicketBasic extends api.ODHelpMenuCategory {
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultTicketBasic>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultTicketBasic[HelpMenuCategoryId]
get(id:api.ODValidId): api.ODHelpMenuComponent|null
get(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.get(id)
}
remove<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultTicketBasic>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultTicketBasic[HelpMenuCategoryId]
remove(id:api.ODValidId): api.ODHelpMenuComponent|null
remove(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.remove(id)
}
exists(id:keyof ODHelpMenuManagerCategoryIds_DefaultTicketBasic): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced `type`
* This interface is a list of ids available in the `ODHelpMenuCategory_DefaultTicketAdvanced` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced {
"opendiscord:pin":api.ODHelpMenuCommandComponent,
"opendiscord:unpin":api.ODHelpMenuCommandComponent,
"opendiscord:move":api.ODHelpMenuCommandComponent,
"opendiscord:rename":api.ODHelpMenuCommandComponent
}
/**## ODHelpMenuCategory_DefaultTicketAdvanced `default_class`
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:ticket` category in `opendiscord.helpmenu`!
*/
export class ODHelpMenuCategory_DefaultTicketAdvanced extends api.ODHelpMenuCategory {
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced[HelpMenuCategoryId]
get(id:api.ODValidId): api.ODHelpMenuComponent|null
get(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.get(id)
}
remove<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced[HelpMenuCategoryId]
remove(id:api.ODValidId): api.ODHelpMenuComponent|null
remove(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.remove(id)
}
exists(id:keyof ODHelpMenuManagerCategoryIds_DefaultTicketAdvanced): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODHelpMenuManagerCategoryIds_DefaultTicketUser `type`
* This interface is a list of ids available in the `ODHelpMenuCategory_DefaultTicketUser` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODHelpMenuManagerCategoryIds_DefaultTicketUser {
"opendiscord:claim":api.ODHelpMenuCommandComponent,
"opendiscord:unclaim":api.ODHelpMenuCommandComponent,
"opendiscord:add":api.ODHelpMenuCommandComponent,
"opendiscord:remove":api.ODHelpMenuCommandComponent,
"opendiscord:transfer":api.ODHelpMenuCommandComponent,
}
/**## ODHelpMenuCategory_DefaultTicketUser `default_class`
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:ticket` category in `opendiscord.helpmenu`!
*/
export class ODHelpMenuCategory_DefaultTicketUser extends api.ODHelpMenuCategory {
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultTicketUser>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultTicketUser[HelpMenuCategoryId]
get(id:api.ODValidId): api.ODHelpMenuComponent|null
get(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.get(id)
}
remove<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultTicketUser>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultTicketUser[HelpMenuCategoryId]
remove(id:api.ODValidId): api.ODHelpMenuComponent|null
remove(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.remove(id)
}
exists(id:keyof ODHelpMenuManagerCategoryIds_DefaultTicketUser): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODHelpMenuManagerCategoryIds_DefaultAdmin `type`
* This interface is a list of ids available in the `ODHelpMenuCategory_DefaultAdmin` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODHelpMenuManagerCategoryIds_DefaultAdmin {
"opendiscord:panel":api.ODHelpMenuCommandComponent,
"opendiscord:blacklist-view":api.ODHelpMenuCommandComponent,
"opendiscord:blacklist-add":api.ODHelpMenuCommandComponent,
"opendiscord:blacklist-remove":api.ODHelpMenuCommandComponent,
"opendiscord:blacklist-get":api.ODHelpMenuCommandComponent
}
/**## ODHelpMenuCategory_DefaultAdmin `default_class`
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:admin` category in `opendiscord.helpmenu`!
*/
export class ODHelpMenuCategory_DefaultAdmin extends api.ODHelpMenuCategory {
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultAdmin>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultAdmin[HelpMenuCategoryId]
get(id:api.ODValidId): api.ODHelpMenuComponent|null
get(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.get(id)
}
remove<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultAdmin>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultAdmin[HelpMenuCategoryId]
remove(id:api.ODValidId): api.ODHelpMenuComponent|null
remove(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.remove(id)
}
exists(id:keyof ODHelpMenuManagerCategoryIds_DefaultAdmin): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODHelpMenuManagerCategoryIds_DefaultAdvanced `type`
* This interface is a list of ids available in the `ODHelpMenuCategory_DefaultAdvanced` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODHelpMenuManagerCategoryIds_DefaultAdvanced {
"opendiscord:stats-global":api.ODHelpMenuCommandComponent,
"opendiscord:stats-reset":api.ODHelpMenuCommandComponent,
"opendiscord:stats-ticket":api.ODHelpMenuCommandComponent,
"opendiscord:stats-user":api.ODHelpMenuCommandComponent,
"opendiscord:autoclose-disable":api.ODHelpMenuCommandComponent,
"opendiscord:autoclose-enable":api.ODHelpMenuCommandComponent,
"opendiscord:autodelete-disable":api.ODHelpMenuCommandComponent,
"opendiscord:autodelete-enable":api.ODHelpMenuCommandComponent,
"opendiscord:topic-set":api.ODHelpMenuCommandComponent,
"opendiscord:priority-set":api.ODHelpMenuCommandComponent,
}
/**## ODHelpMenuCategory_DefaultAdvanced `default_class`
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:advanced` category in `opendiscord.helpmenu`!
*/
export class ODHelpMenuCategory_DefaultAdvanced extends api.ODHelpMenuCategory {
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultAdvanced>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultAdvanced[HelpMenuCategoryId]
get(id:api.ODValidId): api.ODHelpMenuComponent|null
get(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.get(id)
}
remove<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultAdvanced>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultAdvanced[HelpMenuCategoryId]
remove(id:api.ODValidId): api.ODHelpMenuComponent|null
remove(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.remove(id)
}
exists(id:keyof ODHelpMenuManagerCategoryIds_DefaultAdvanced): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODHelpMenuManagerCategoryIds_DefaultExtra `type`
* This interface is a list of ids available in the `ODHelpMenuCategory_DefaultExtra` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODHelpMenuManagerCategoryIds_DefaultExtra {}
/**## ODHelpMenuCategory_DefaultExtra `default_class`
* This is a special class that adds type definitions & typescript to the ODHelpMenuManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:general` category in `opendiscord.helpmenu`!
*/
export class ODHelpMenuCategory_DefaultExtra extends api.ODHelpMenuCategory {
get<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultExtra>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultExtra[HelpMenuCategoryId]
get(id:api.ODValidId): api.ODHelpMenuComponent|null
get(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.get(id)
}
remove<HelpMenuCategoryId extends keyof ODHelpMenuManagerCategoryIds_DefaultExtra>(id:HelpMenuCategoryId): ODHelpMenuManagerCategoryIds_DefaultExtra[HelpMenuCategoryId]
remove(id:api.ODValidId): api.ODHelpMenuComponent|null
remove(id:api.ODValidId): api.ODHelpMenuComponent|null {
return super.remove(id)
}
exists(id:keyof ODHelpMenuManagerCategoryIds_DefaultExtra): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-30
View File
@@ -1,30 +0,0 @@
///////////////////////////////////////
//DEFAULT PERMISSION MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
import { ODClientManager_Default } from "./client"
/**## ODPermissionManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODPermissionManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.permissions`!
*/
export class ODPermissionManager_Default extends api.ODPermissionManager {
constructor(debug:api.ODDebugger,client:ODClientManager_Default){
super(debug,client,true)
}
}
/**## ODPermissionEmbedType `type`
* This type contains all types available in the `opendiscord:no-permissions` embed.
*/
export type ODPermissionEmbedType = (
"developer"|
"owner"|
"admin"|
"moderator"|
"support"|
"member"|
"discord-administrator"
)
-76
View File
@@ -1,76 +0,0 @@
///////////////////////////////////////
//DEFAULT POST MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODPluginManagerIds_Default `interface`
* This interface is a list of ids available in the `ODPluginManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODPluginManagerIds_Default {}
/**## ODPluginManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODPluginManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.plugins`!
*/
export class ODPluginManager_Default extends api.ODPluginManager {
declare classes: ODPluginClassManager_Default
get<PluginId extends keyof ODPluginManagerIds_Default>(id:PluginId): ODPluginManagerIds_Default[PluginId]
get(id:api.ODValidId): api.ODPlugin|null
get(id:api.ODValidId): api.ODPlugin|null {
return super.get(id)
}
remove<PluginId extends keyof ODPluginManagerIds_Default>(id:PluginId): ODPluginManagerIds_Default[PluginId]
remove(id:api.ODValidId): api.ODPlugin|null
remove(id:api.ODValidId): api.ODPlugin|null {
return super.remove(id)
}
exists(id:keyof ODPluginManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODPluginClassManagerIds_Default `interface`
* This interface is a list of ids available in the `ODPluginClassManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODPluginClassManagerIds_Default {}
/**## ODPluginClassManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODPluginClassManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.plugins.classes`!
*/
export class ODPluginClassManager_Default extends api.ODPluginClassManager {
get<PluginClassId extends keyof ODPluginClassManagerIds_Default>(id:PluginClassId): ODPluginClassManagerIds_Default[PluginClassId]
get(id:api.ODValidId): api.ODManagerData|null
get(id:api.ODValidId): api.ODManagerData|null {
return super.get(id)
}
remove<PluginClassId extends keyof ODPluginClassManagerIds_Default>(id:PluginClassId): ODPluginClassManagerIds_Default[PluginClassId]
remove(id:api.ODValidId): api.ODManagerData|null
remove(id:api.ODValidId): api.ODManagerData|null {
return super.remove(id)
}
exists(id:keyof ODPluginClassManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-43
View File
@@ -1,43 +0,0 @@
///////////////////////////////////////
//DEFAULT POST MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
import * as discord from "discord.js"
/**## ODPostManagerIds_Default `interface`
* This interface is a list of ids available in the `ODPostManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODPostManagerIds_Default {
"opendiscord:logs":api.ODPost<discord.GuildTextBasedChannel>|null,
"opendiscord:transcripts":api.ODPost<discord.GuildTextBasedChannel>|null
}
/**## ODPostManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODPostManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.code`!
*/
export class ODPostManager_Default extends api.ODPostManager {
get<PostId extends keyof ODPostManagerIds_Default>(id:PostId): ODPostManagerIds_Default[PostId]
get(id:api.ODValidId): api.ODPost<discord.GuildBasedChannel>|null
get(id:api.ODValidId): api.ODPost<discord.GuildBasedChannel>|null {
return super.get(id)
}
remove<PostId extends keyof ODPostManagerIds_Default>(id:PostId): ODPostManagerIds_Default[PostId]
remove(id:api.ODValidId): api.ODPost<discord.GuildBasedChannel>|null
remove(id:api.ODValidId): api.ODPost<discord.GuildBasedChannel>|null {
return super.remove(id)
}
exists(id:keyof ODPostManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-169
View File
@@ -1,169 +0,0 @@
///////////////////////////////////////
//DEFAULT PROGRESS BAR MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
import ansis from "ansis"
/**## ODProgressBarRenderer_DefaultSettingsLabel `type`
* All available label types for the default progress bar renderer
*/
export type ODProgressBarRenderer_DefaultSettingsLabel = "value"|"percentage"|"fraction"|"time-ms"|"time-sec"|"time-min"
/**## ODProgressBarRenderer_DefaultSettings `interface`
* This interface contains the settings for the default progress bar renderer.
*/
export interface ODProgressBarRenderer_DefaultSettings {
/**The color of the progress bar border. */
borderColor:api.ODValidConsoleColor|"openticket",
/**The color of the progress bar (filled side). */
filledBarColor:api.ODValidConsoleColor|"openticket",
/**The color of the progress bar (empty side). */
emptyBarColor:api.ODValidConsoleColor|"openticket",
/**The color of the text before the progress bar. */
prefixColor:api.ODValidConsoleColor|"openticket",
/**The color of the text after the progress bar. */
suffixColor:api.ODValidConsoleColor|"openticket",
/**The color of the progress bar label. */
labelColor:api.ODValidConsoleColor|"openticket",
/**The character used in the left border. */
leftBorderChar:string,
/**The character used in the right border. */
rightBorderChar:string,
/**The character used in the filled side of the progress bar. */
filledBarChar:string,
/**The character used in the empty side of the progress bar. */
emptyBarChar:string,
/**The label type. (will show a number related to the progress) */
labelType:ODProgressBarRenderer_DefaultSettingsLabel,
/**The position of the label. */
labelPosition:"start"|"end",
/**The width of the bar. (50 characters by default) */
barWidth:number,
/**Show the bar. */
showBar:boolean,
/**Show the label. */
showLabel:boolean,
/**Show the border. */
showBorder:boolean,
}
export class ODProgressBarRenderer_Default extends api.ODProgressBarRenderer<ODProgressBarRenderer_DefaultSettings> {
constructor(id:api.ODValidId,settings:ODProgressBarRenderer_DefaultSettings){
super(id,(settings,min,max,value,rawPrefix,rawSuffix) => {
const percentage = (value-min)/(max-min)
const barLevel = Math.round(percentage*settings.barWidth)
const borderAnsis = (settings.borderColor == "openticket") ? ansis.hex("#f8ba00") : ansis[settings.borderColor]
const filledBarAnsis = (settings.filledBarColor == "openticket") ? ansis.hex("#f8ba00") : ansis[settings.filledBarColor]
const emptyBarAnsis = (settings.emptyBarColor == "openticket") ? ansis.hex("#f8ba00") : ansis[settings.emptyBarColor]
const labelAnsis = (settings.labelColor == "openticket") ? ansis.hex("#f8ba00") : ansis[settings.labelColor]
const prefixAnsis = (settings.prefixColor == "openticket") ? ansis.hex("#f8ba00") : ansis[settings.prefixColor]
const suffixAnsis = (settings.suffixColor == "openticket") ? ansis.hex("#f8ba00") : ansis[settings.suffixColor]
const leftBorder = (settings.showBorder) ? borderAnsis(settings.leftBorderChar) : ""
const rightBorder = (settings.showBorder) ? borderAnsis(settings.rightBorderChar) : ""
const bar = (settings.showBar) ? filledBarAnsis(settings.filledBarChar.repeat(barLevel))+emptyBarAnsis(settings.emptyBarChar.repeat(settings.barWidth-barLevel)) : ""
const prefix = (rawPrefix) ? prefixAnsis(rawPrefix)+" " : ""
const suffix = (rawSuffix) ? " "+suffixAnsis(rawSuffix) : ""
let label: string
if (!settings.showLabel) label = ""
if (settings.labelType == "fraction") label = labelAnsis(value+"/"+max)
else if (settings.labelType == "percentage") label = labelAnsis(Math.round(percentage*100)+"%")
else if (settings.labelType == "time-ms") label = labelAnsis(value+"ms")
else if (settings.labelType == "time-sec") label = labelAnsis(Math.round(value*10)/10+"sec")
else if (settings.labelType == "time-min") label = labelAnsis(Math.round(value*10)/10+"min")
else label = labelAnsis(value.toString())
const labelWithPrefixAndSuffix = prefix+label+suffix
return (settings.labelPosition == "start") ? labelWithPrefixAndSuffix+" "+leftBorder+bar+rightBorder : leftBorder+bar+rightBorder+" "+labelWithPrefixAndSuffix
},settings)
}
}
/**## ODProgressBarRendererManagerIds_Default `interface`
* This interface is a list of ids available in the `ODProgressBarRendererManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODProgressBarRendererManagerIds_Default {
"opendiscord:value-renderer":ODProgressBarRenderer_Default,
"opendiscord:fraction-renderer":ODProgressBarRenderer_Default,
"opendiscord:percentage-renderer":ODProgressBarRenderer_Default,
"opendiscord:time-ms-renderer":ODProgressBarRenderer_Default,
"opendiscord:time-sec-renderer":ODProgressBarRenderer_Default,
"opendiscord:time-min-renderer":ODProgressBarRenderer_Default,
}
/**## ODProgressBarRendererManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODProgressBarRendererManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.progressbars.renderers`!
*/
export class ODProgressBarRendererManager_Default extends api.ODProgressBarRendererManager {
get<ProgressBarId extends keyof ODProgressBarRendererManagerIds_Default>(id:ProgressBarId): ODProgressBarRendererManagerIds_Default[ProgressBarId]
get(id:api.ODValidId): api.ODProgressBarRenderer<{}>|null
get(id:api.ODValidId): api.ODProgressBarRenderer<{}>|null {
return super.get(id)
}
remove<ProgressBarId extends keyof ODProgressBarRendererManagerIds_Default>(id:ProgressBarId): ODProgressBarRendererManagerIds_Default[ProgressBarId]
remove(id:api.ODValidId): api.ODProgressBarRenderer<{}>|null
remove(id:api.ODValidId): api.ODProgressBarRenderer<{}>|null {
return super.remove(id)
}
exists(id:keyof ODProgressBarRendererManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODProgressBarManagerIds_Default `interface`
* This interface is a list of ids available in the `ODProgressBarManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODProgressBarManagerIds_Default {
"opendiscord:slash-command-remove":api.ODManualProgressBar,
"opendiscord:slash-command-create":api.ODManualProgressBar,
"opendiscord:slash-command-update":api.ODManualProgressBar,
"opendiscord:context-menu-remove":api.ODManualProgressBar,
"opendiscord:context-menu-create":api.ODManualProgressBar,
"opendiscord:context-menu-update":api.ODManualProgressBar,
}
/**## ODProgressBarManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODProgressBarManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.progressbars`!
*/
export class ODProgressBarManager_Default extends api.ODProgressBarManager {
declare renderers: ODProgressBarRendererManager_Default
get<ProgressBarId extends keyof ODProgressBarManagerIds_Default>(id:ProgressBarId): ODProgressBarManagerIds_Default[ProgressBarId]
get(id:api.ODValidId): api.ODProgressBar|null
get(id:api.ODValidId): api.ODProgressBar|null {
return super.get(id)
}
remove<ProgressBarId extends keyof ODProgressBarManagerIds_Default>(id:ProgressBarId): ODProgressBarManagerIds_Default[ProgressBarId]
remove(id:api.ODValidId): api.ODProgressBar|null
remove(id:api.ODValidId): api.ODProgressBar|null {
return super.remove(id)
}
exists(id:keyof ODProgressBarManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-354
View File
@@ -1,354 +0,0 @@
///////////////////////////////////////
//DEFAULT RESPONDER MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
import { ODWorkerManager_Default } from "./worker"
/**## ODResponderManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODResponderManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.responders`!
*/
export class ODResponderManager_Default extends api.ODResponderManager {
declare commands: ODCommandResponderManager_Default
declare buttons: ODButtonResponderManager_Default
declare dropdowns: ODDropdownResponderManager_Default
declare modals: ODModalResponderManager_Default
declare contextMenus: ODContextMenuResponderManager_Default
declare autocomplete: ODAutocompleteResponderManager_Default
}
/**## ODCommandResponderManagerIds_Default `interface`
* This interface is a list of ids available in the `ODCommandResponderManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODCommandResponderManagerIds_Default {
"opendiscord:help":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:help"|"opendiscord:logs"},
"opendiscord:stats":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:stats"|"opendiscord:logs"},
"opendiscord:panel":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:panel"|"opendiscord:logs"},
"opendiscord:ticket":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:ticket"|"opendiscord:logs"},
"opendiscord:blacklist":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:blacklist"|"opendiscord:discord-logs"|"opendiscord:logs"},
"opendiscord:close":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:close"|"opendiscord:logs"},
"opendiscord:reopen":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:reopen"|"opendiscord:logs"},
"opendiscord:delete":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:delete"|"opendiscord:logs"},
"opendiscord:claim":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:claim"|"opendiscord:logs"},
"opendiscord:unclaim":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:unclaim"|"opendiscord:logs"},
"opendiscord:pin":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:pin"|"opendiscord:logs"},
"opendiscord:unpin":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:unpin"|"opendiscord:logs"},
"opendiscord:rename":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:rename"|"opendiscord:logs"},
"opendiscord:move":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:move"|"opendiscord:logs"},
"opendiscord:add":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:add"|"opendiscord:logs"},
"opendiscord:remove":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:remove"|"opendiscord:logs"},
"opendiscord:clear":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:clear"|"opendiscord:logs"},
"opendiscord:topic":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:topic"|"opendiscord:logs"},
"opendiscord:priority":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:priority"|"opendiscord:logs"},
"opendiscord:transfer":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:transfer"|"opendiscord:logs"},
"opendiscord:autoclose":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:autoclose"|"opendiscord:logs"},
"opendiscord:autodelete":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:autodelete"|"opendiscord:logs"},
}
/**## ODCommandResponderManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODCommandResponderManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.responders.commands`!
*/
export class ODCommandResponderManager_Default extends api.ODCommandResponderManager {
get<CommandResponderId extends keyof ODCommandResponderManagerIds_Default>(id:CommandResponderId): ODCommandResponder_Default<ODCommandResponderManagerIds_Default[CommandResponderId]["source"],ODCommandResponderManagerIds_Default[CommandResponderId]["params"],ODCommandResponderManagerIds_Default[CommandResponderId]["workers"]>
get(id:api.ODValidId): api.ODCommandResponder<"slash"|"text",any>|null
get(id:api.ODValidId): api.ODCommandResponder<"slash"|"text",any>|null {
return super.get(id)
}
remove<CommandResponderId extends keyof ODCommandResponderManagerIds_Default>(id:CommandResponderId): ODCommandResponder_Default<ODCommandResponderManagerIds_Default[CommandResponderId]["source"],ODCommandResponderManagerIds_Default[CommandResponderId]["params"],ODCommandResponderManagerIds_Default[CommandResponderId]["workers"]>
remove(id:api.ODValidId): api.ODCommandResponder<"slash"|"text",any>|null
remove(id:api.ODValidId): api.ODCommandResponder<"slash"|"text",any>|null {
return super.remove(id)
}
exists(id:keyof ODCommandResponderManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODCommandResponder_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODCommandResponder class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODCommandResponder`'s!
*/
export class ODCommandResponder_Default<Source extends "slash"|"text", Params, WorkerIds extends string> extends api.ODCommandResponder<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODCommandResponderInstance,Source,Params,WorkerIds>
}
/**## ODButtonResponderManagerIds_Default `interface`
* This interface is a list of ids available in the `ODButtonResponderManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODButtonResponderManagerIds_Default {
"opendiscord:verifybar-success":{source:"button",params:{},workers:"opendiscord:handle-verifybar"},
"opendiscord:verifybar-failure":{source:"button",params:{},workers:"opendiscord:handle-verifybar"},
"opendiscord:help-menu-switch":{source:"button",params:{},workers:"opendiscord:update-help-menu"},
"opendiscord:help-menu-previous":{source:"button",params:{},workers:"opendiscord:update-help-menu"},
"opendiscord:help-menu-next":{source:"button",params:{},workers:"opendiscord:update-help-menu"},
"opendiscord:ticket-option":{source:"button",params:{},workers:"opendiscord:ticket-option"},
"opendiscord:role-option":{source:"button",params:{},workers:"opendiscord:role-option"},
"opendiscord:claim-ticket":{source:"button",params:{},workers:"opendiscord:claim-ticket"},
"opendiscord:unclaim-ticket":{source:"button",params:{},workers:"opendiscord:unclaim-ticket"},
"opendiscord:pin-ticket":{source:"button",params:{},workers:"opendiscord:pin-ticket"},
"opendiscord:unpin-ticket":{source:"button",params:{},workers:"opendiscord:unpin-ticket"},
"opendiscord:close-ticket":{source:"button",params:{},workers:"opendiscord:close-ticket"},
"opendiscord:reopen-ticket":{source:"button",params:{},workers:"opendiscord:reopen-ticket"},
"opendiscord:delete-ticket":{source:"button",params:{},workers:"opendiscord:delete-ticket"},
"opendiscord:transcript-error-retry":{source:"button",params:{},workers:"opendiscord:permissions"|"opendiscord:delete-ticket"|"opendiscord:logs"},
"opendiscord:transcript-error-continue":{source:"button",params:{},workers:"opendiscord:permissions"|"opendiscord:delete-ticket"|"opendiscord:logs"},
"opendiscord:clear-continue":{source:"button",params:{},workers:"opendiscord:clear-continue"},
}
/**## ODButtonResponderManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODButtonResponderManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.responders.buttons`!
*/
export class ODButtonResponderManager_Default extends api.ODButtonResponderManager {
get<ButtonResponderId extends keyof ODButtonResponderManagerIds_Default>(id:ButtonResponderId): ODButtonResponder_Default<ODButtonResponderManagerIds_Default[ButtonResponderId]["source"],ODButtonResponderManagerIds_Default[ButtonResponderId]["params"],ODButtonResponderManagerIds_Default[ButtonResponderId]["workers"]>
get(id:api.ODValidId): api.ODButtonResponder<"button",any>|null
get(id:api.ODValidId): api.ODButtonResponder<"button",any>|null {
return super.get(id)
}
remove<ButtonResponderId extends keyof ODButtonResponderManagerIds_Default>(id:ButtonResponderId): ODButtonResponder_Default<ODButtonResponderManagerIds_Default[ButtonResponderId]["source"],ODButtonResponderManagerIds_Default[ButtonResponderId]["params"],ODButtonResponderManagerIds_Default[ButtonResponderId]["workers"]>
remove(id:api.ODValidId): api.ODButtonResponder<"button",any>|null
remove(id:api.ODValidId): api.ODButtonResponder<"button",any>|null {
return super.remove(id)
}
exists(id:keyof ODButtonResponderManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODButtonResponder_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODButtonResponder class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODButtonResponder`'s!
*/
export class ODButtonResponder_Default<Source extends string, Params, WorkerIds extends string> extends api.ODButtonResponder<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODButtonResponderInstance,Source,Params,WorkerIds>
}
/**## ODDropdownResponderManagerIds_Default `interface`
* This interface is a list of ids available in the `ODDropdownResponderManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODDropdownResponderManagerIds_Default {
"opendiscord:panel-dropdown-tickets":{source:"dropdown",params:{},workers:"opendiscord:panel-dropdown-tickets"},
}
/**## ODDropdownResponderManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODDropdownResponderManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.responders.dropdowns`!
*/
export class ODDropdownResponderManager_Default extends api.ODDropdownResponderManager {
get<DropdownResponderId extends keyof ODDropdownResponderManagerIds_Default>(id:DropdownResponderId): ODDropdownResponder_Default<ODDropdownResponderManagerIds_Default[DropdownResponderId]["source"],ODDropdownResponderManagerIds_Default[DropdownResponderId]["params"],ODDropdownResponderManagerIds_Default[DropdownResponderId]["workers"]>
get(id:api.ODValidId): api.ODDropdownResponder<"dropdown",any>|null
get(id:api.ODValidId): api.ODDropdownResponder<"dropdown",any>|null {
return super.get(id)
}
remove<DropdownResponderId extends keyof ODDropdownResponderManagerIds_Default>(id:DropdownResponderId): ODDropdownResponder_Default<ODDropdownResponderManagerIds_Default[DropdownResponderId]["source"],ODDropdownResponderManagerIds_Default[DropdownResponderId]["params"],ODDropdownResponderManagerIds_Default[DropdownResponderId]["workers"]>
remove(id:api.ODValidId): api.ODDropdownResponder<"dropdown",any>|null
remove(id:api.ODValidId): api.ODDropdownResponder<"dropdown",any>|null {
return super.remove(id)
}
exists(id:keyof ODDropdownResponderManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODDropdownResponder_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODDropdownResponder class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODDropdownResponder`'s!
*/
export class ODDropdownResponder_Default<Source extends string, Params, WorkerIds extends string> extends api.ODDropdownResponder<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODDropdownResponderInstance,Source,Params,WorkerIds>
}
/**## ODModalResponderManagerIds_Default `interface`
* This interface is a list of ids available in the `ODModalResponderManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODModalResponderManagerIds_Default {
"opendiscord:ticket-questions":{source:"modal",params:{},workers:"opendiscord:ticket-questions"},
"opendiscord:close-ticket-reason":{source:"modal",params:{},workers:"opendiscord:close-ticket-reason"},
"opendiscord:reopen-ticket-reason":{source:"modal",params:{},workers:"opendiscord:reopen-ticket-reason"},
"opendiscord:delete-ticket-reason":{source:"modal",params:{},workers:"opendiscord:delete-ticket-reason"},
"opendiscord:claim-ticket-reason":{source:"modal",params:{},workers:"opendiscord:claim-ticket-reason"},
"opendiscord:unclaim-ticket-reason":{source:"modal",params:{},workers:"opendiscord:unclaim-ticket-reason"},
"opendiscord:pin-ticket-reason":{source:"modal",params:{},workers:"opendiscord:pin-ticket-reason"},
"opendiscord:unpin-ticket-reason":{source:"modal",params:{},workers:"opendiscord:unpin-ticket-reason"},
}
/**## ODModalResponderManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODModalResponderManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.responders.dropdowns`!
*/
export class ODModalResponderManager_Default extends api.ODModalResponderManager {
get<ModalResponderId extends keyof ODModalResponderManagerIds_Default>(id:ModalResponderId): ODModalResponder_Default<ODModalResponderManagerIds_Default[ModalResponderId]["source"],ODModalResponderManagerIds_Default[ModalResponderId]["params"],ODModalResponderManagerIds_Default[ModalResponderId]["workers"]>
get(id:api.ODValidId): api.ODModalResponder<"modal",any>|null
get(id:api.ODValidId): api.ODModalResponder<"modal",any>|null {
return super.get(id)
}
remove<ModalResponderId extends keyof ODModalResponderManagerIds_Default>(id:ModalResponderId): ODModalResponder_Default<ODModalResponderManagerIds_Default[ModalResponderId]["source"],ODModalResponderManagerIds_Default[ModalResponderId]["params"],ODModalResponderManagerIds_Default[ModalResponderId]["workers"]>
remove(id:api.ODValidId): api.ODModalResponder<"modal",any>|null
remove(id:api.ODValidId): api.ODModalResponder<"modal",any>|null {
return super.remove(id)
}
exists(id:keyof ODModalResponderManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODModalResponder_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODModalResponder class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODModalResponder`'s!
*/
export class ODModalResponder_Default<Source extends string, Params, WorkerIds extends string> extends api.ODModalResponder<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODModalResponderInstance,Source,Params,WorkerIds>
}
/**## ODContextMenuResponderManagerIds_Default `interface`
* This interface is a list of ids available in the `ODContextMenuResponderManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODContextMenuResponderManagerIds_Default {
//"opendiscord:example":{source:"context-menu",params:{},workers:"opendiscord:example"},
}
/**## ODContextMenuResponderManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODContextMenuResponderManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.responders.contextMenus`!
*/
export class ODContextMenuResponderManager_Default extends api.ODContextMenuResponderManager {
get<ModalResponderId extends keyof ODContextMenuResponderManagerIds_Default>(id:ModalResponderId): ODContextMenuResponder_Default<ODContextMenuResponderManagerIds_Default[ModalResponderId]["source"],ODContextMenuResponderManagerIds_Default[ModalResponderId]["params"],ODContextMenuResponderManagerIds_Default[ModalResponderId]["workers"]>
get(id:api.ODValidId): api.ODContextMenuResponder<"context-menu",any>|null
get(id:api.ODValidId): api.ODContextMenuResponder<"context-menu",any>|null {
return super.get(id)
}
remove<ModalResponderId extends keyof ODContextMenuResponderManagerIds_Default>(id:ModalResponderId): ODContextMenuResponder_Default<ODContextMenuResponderManagerIds_Default[ModalResponderId]["source"],ODContextMenuResponderManagerIds_Default[ModalResponderId]["params"],ODContextMenuResponderManagerIds_Default[ModalResponderId]["workers"]>
remove(id:api.ODValidId): api.ODContextMenuResponder<"context-menu",any>|null
remove(id:api.ODValidId): api.ODContextMenuResponder<"context-menu",any>|null {
return super.remove(id)
}
exists(id:keyof ODContextMenuResponderManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODContextMenuResponder_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODContextMenuResponder class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODContextMenuResponder`'s!
*/
export class ODContextMenuResponder_Default<Source extends string, Params, WorkerIds extends string> extends api.ODContextMenuResponder<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODContextMenuResponderInstance,Source,Params,WorkerIds>
}
/**## ODAutocompleteResponderManagerIds_Default `interface`
* This interface is a list of ids available in the `ODAutocompleteResponderManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODAutocompleteResponderManagerIds_Default {
"opendiscord:panel-id":{source:"autocomplete",params:{},workers:"opendiscord:panel-id"},
"opendiscord:option-id":{source:"autocomplete",params:{},workers:"opendiscord:option-id"}
}
/**## ODAutocompleteResponderManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODAutocompleteResponderManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.responders.autocomplete`!
*/
export class ODAutocompleteResponderManager_Default extends api.ODAutocompleteResponderManager {
get<ModalResponderId extends keyof ODAutocompleteResponderManagerIds_Default>(id:ModalResponderId): ODAutocompleteResponder_Default<ODAutocompleteResponderManagerIds_Default[ModalResponderId]["source"],ODAutocompleteResponderManagerIds_Default[ModalResponderId]["params"],ODAutocompleteResponderManagerIds_Default[ModalResponderId]["workers"]>
get(id:api.ODValidId): api.ODAutocompleteResponder<"autocomplete",any>|null
get(id:api.ODValidId): api.ODAutocompleteResponder<"autocomplete",any>|null {
return super.get(id)
}
remove<ModalResponderId extends keyof ODAutocompleteResponderManagerIds_Default>(id:ModalResponderId): ODAutocompleteResponder_Default<ODAutocompleteResponderManagerIds_Default[ModalResponderId]["source"],ODAutocompleteResponderManagerIds_Default[ModalResponderId]["params"],ODAutocompleteResponderManagerIds_Default[ModalResponderId]["workers"]>
remove(id:api.ODValidId): api.ODAutocompleteResponder<"autocomplete",any>|null
remove(id:api.ODValidId): api.ODAutocompleteResponder<"autocomplete",any>|null {
return super.remove(id)
}
exists(id:keyof ODAutocompleteResponderManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODAutocompleteResponder_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODAutocompleteResponder class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODAutocompleteResponder`'s!
*/
export class ODAutocompleteResponder_Default<Source extends string, Params, WorkerIds extends string> extends api.ODAutocompleteResponder<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODAutocompleteResponderInstance,Source,Params,WorkerIds>
}
-41
View File
@@ -1,41 +0,0 @@
///////////////////////////////////////
//DEFAULT SESSION MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODSessionManagerIds_Default `interface`
* This interface is a list of ids available in the `ODSessionManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODSessionManagerIds_Default {
//"test-session":ODSession
}
/**## ODSessionManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODSessionManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.sessions`!
*/
export class ODSessionManager_Default extends api.ODSessionManager {
get<SessionId extends keyof ODSessionManagerIds_Default>(id:SessionId): ODSessionManagerIds_Default[SessionId]
get(id:api.ODValidId): api.ODSession|null
get(id:api.ODValidId): api.ODSession|null {
return super.get(id)
}
remove<SessionId extends keyof ODSessionManagerIds_Default>(id:SessionId): ODSessionManagerIds_Default[SessionId]
remove(id:api.ODValidId): api.ODSession|null
remove(id:api.ODValidId): api.ODSession|null {
return super.remove(id)
}
exists(id:keyof ODSessionManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-47
View File
@@ -1,47 +0,0 @@
///////////////////////////////////////
//DEFAULT STARTSCREEN MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODStartScreenManagerIds_Default `interface`
* This interface is a list of ids available in the `ODStartScreenManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODStartScreenManagerIds_Default {
"opendiscord:logo":api.ODStartScreenLogoComponent,
"opendiscord:header":api.ODStartScreenHeaderComponent,
"opendiscord:flags":api.ODStartScreenFlagsCategoryComponent,
"opendiscord:plugins":api.ODStartScreenPluginsCategoryComponent,
"opendiscord:stats":api.ODStartScreenPropertiesCategoryComponent,
"opendiscord:livestatus":api.ODStartScreenLiveStatusCategoryComponent,
"opendiscord:logs":api.ODStartScreenCategoryComponent
}
/**## ODStartScreenManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODStartScreenManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.startscreen`!
*/
export class ODStartScreenManager_Default extends api.ODStartScreenManager {
get<StartScreenId extends keyof ODStartScreenManagerIds_Default>(id:StartScreenId): ODStartScreenManagerIds_Default[StartScreenId]
get(id:api.ODValidId): api.ODStartScreenComponent|null
get(id:api.ODValidId): api.ODStartScreenComponent|null {
return super.get(id)
}
remove<StartScreenId extends keyof ODStartScreenManagerIds_Default>(id:StartScreenId): ODStartScreenManagerIds_Default[StartScreenId]
remove(id:api.ODValidId): api.ODStartScreenComponent|null
remove(id:api.ODValidId): api.ODStartScreenComponent|null {
return super.remove(id)
}
exists(id:keyof ODStartScreenManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
-471
View File
@@ -1,471 +0,0 @@
///////////////////////////////////////
//DEFAULT SESSION MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODStatsManagerIds_Default `interface`
* This interface is a list of ids available in the `ODStatsManager_Default` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODStatsManagerIds_Default {
"opendiscord:global":ODStatGlobalScope_DefaultGlobal,
"opendiscord:system":ODStatGlobalScope_DefaultSystem,
"opendiscord:user":ODStatScope_DefaultUser,
"opendiscord:ticket":ODStatScope_DefaultTicket,
"opendiscord:participants":ODStatScope_DefaultParticipants,
"opendiscord:messages":ODStatScope_DefaultMessages,
}
/**## ODStatsManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.stats`!
*/
export class ODStatsManager_Default extends api.ODStatsManager {
get<StatsId extends keyof ODStatsManagerIds_Default>(id:StatsId): ODStatsManagerIds_Default[StatsId]
get(id:api.ODValidId): api.ODStatScope|null
get(id:api.ODValidId): api.ODStatScope|null {
return super.get(id)
}
remove<StatsId extends keyof ODStatsManagerIds_Default>(id:StatsId): ODStatsManagerIds_Default[StatsId]
remove(id:api.ODValidId): api.ODStatScope|null
remove(id:api.ODValidId): api.ODStatScope|null {
return super.remove(id)
}
exists(id:keyof ODStatsManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODStatGlobalScopeIds_DefaultGlobal `type`
* This interface is a list of ids available in the `ODStatGlobalScope_DefaultGlobal` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODStatGlobalScopeIds_DefaultGlobal {
"opendiscord:tickets-created":api.ODBasicStat,
"opendiscord:tickets-closed":api.ODBasicStat,
"opendiscord:tickets-deleted":api.ODBasicStat,
"opendiscord:tickets-reopened":api.ODBasicStat,
"opendiscord:tickets-autoclosed":api.ODBasicStat,
"opendiscord:tickets-autodeleted":api.ODBasicStat,
"opendiscord:tickets-claimed":api.ODBasicStat,
"opendiscord:tickets-pinned":api.ODBasicStat,
"opendiscord:tickets-moved":api.ODBasicStat,
"opendiscord:tickets-transferred":api.ODBasicStat,
"opendiscord:users-blacklisted":api.ODBasicStat,
"opendiscord:transcripts-created":api.ODBasicStat,
"opendiscord:ticket-volume":api.ODDynamicStat,
"opendiscord:average-tickets":api.ODDynamicStat,
}
/**## ODStatGlobalScope_DefaultGlobal `default_class`
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:global` category in `opendiscord.stats`!
*/
export class ODStatGlobalScope_DefaultGlobal extends api.ODStatGlobalScope {
get<StatsId extends keyof ODStatGlobalScopeIds_DefaultGlobal>(id:StatsId): ODStatGlobalScopeIds_DefaultGlobal[StatsId]
get(id:api.ODValidId): api.ODStat|null
get(id:api.ODValidId): api.ODStat|null {
return super.get(id)
}
remove<StatsId extends keyof ODStatGlobalScopeIds_DefaultGlobal>(id:StatsId): ODStatGlobalScopeIds_DefaultGlobal[StatsId]
remove(id:api.ODValidId): api.ODStat|null
remove(id:api.ODValidId): api.ODStat|null {
return super.remove(id)
}
exists(id:keyof ODStatGlobalScopeIds_DefaultGlobal): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getStat<StatsId extends keyof ODStatGlobalScopeIds_DefaultGlobal>(id:StatsId): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId): Promise<api.ODValidStatValue|null> {
return super.getStat(id)
}
getAllStats<StatsId extends keyof ODStatGlobalScopeIds_DefaultGlobal>(id:StatsId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]> {
return super.getAllStats(id)
}
setStat<StatsId extends keyof ODStatGlobalScopeIds_DefaultGlobal>(id:StatsId, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean> {
return super.setStat(id,value,mode)
}
resetStat<StatsId extends keyof ODStatGlobalScopeIds_DefaultGlobal>(id:api.ODValidId): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId): Promise<api.ODValidStatValue|null> {
return super.resetStat(id)
}
}
/**## ODStatGlobalScopeIds_DefaultSystem `type`
* This interface is a list of ids available in the `ODStatScope_DefaultSystem` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODStatGlobalScopeIds_DefaultSystem {
"opendiscord:startup-date":api.ODDynamicStat,
"opendiscord:system-uptime":api.ODDynamicStat,
"opendiscord:version":api.ODDynamicStat
}
/**## ODStatGlobalScope_DefaultSystem `default_class`
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:system` category in `opendiscord.stats`!
*/
export class ODStatGlobalScope_DefaultSystem extends api.ODStatGlobalScope {
get<StatsId extends keyof ODStatGlobalScopeIds_DefaultSystem>(id:StatsId): ODStatGlobalScopeIds_DefaultSystem[StatsId]
get(id:api.ODValidId): api.ODStat|null
get(id:api.ODValidId): api.ODStat|null {
return super.get(id)
}
remove<StatsId extends keyof ODStatGlobalScopeIds_DefaultSystem>(id:StatsId): ODStatGlobalScopeIds_DefaultSystem[StatsId]
remove(id:api.ODValidId): api.ODStat|null
remove(id:api.ODValidId): api.ODStat|null {
return super.remove(id)
}
exists(id:keyof ODStatGlobalScopeIds_DefaultSystem): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getStat<StatsId extends keyof ODStatGlobalScopeIds_DefaultSystem>(id:StatsId): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId): Promise<api.ODValidStatValue|null> {
return super.getStat(id)
}
getAllStats<StatsId extends keyof ODStatGlobalScopeIds_DefaultSystem>(id:StatsId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]> {
return super.getAllStats(id)
}
setStat<StatsId extends keyof ODStatGlobalScopeIds_DefaultSystem>(id:StatsId, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean> {
return super.setStat(id,value,mode)
}
resetStat<StatsId extends keyof ODStatGlobalScopeIds_DefaultSystem>(id:api.ODValidId): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId): Promise<api.ODValidStatValue|null> {
return super.resetStat(id)
}
}
/**## ODStatScopeIds_DefaultUser `type`
* This interface is a list of ids available in the `ODStatScope_DefaultUser` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODStatScopeIds_DefaultUser {
"opendiscord:name":api.ODDynamicStat,
"opendiscord:role":api.ODDynamicStat,
"opendiscord:tickets-created":api.ODBasicStat,
"opendiscord:tickets-closed":api.ODBasicStat,
"opendiscord:tickets-deleted":api.ODBasicStat,
"opendiscord:tickets-reopened":api.ODBasicStat,
"opendiscord:tickets-claimed":api.ODBasicStat,
"opendiscord:tickets-pinned":api.ODBasicStat,
"opendiscord:tickets-moved":api.ODBasicStat,
"opendiscord:tickets-transferred":api.ODBasicStat,
"opendiscord:users-blacklisted":api.ODBasicStat,
"opendiscord:transcripts-created":api.ODBasicStat,
"opendiscord:current-tickets":api.ODDynamicStat,
}
/**## ODStatScope_DefaultUser `default_class`
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:user` category in `opendiscord.stats`!
*/
export class ODStatScope_DefaultUser extends api.ODStatScope {
get<StatsId extends keyof ODStatScopeIds_DefaultUser>(id:StatsId): ODStatScopeIds_DefaultUser[StatsId]
get(id:api.ODValidId): api.ODStat|null
get(id:api.ODValidId): api.ODStat|null {
return super.get(id)
}
remove<StatsId extends keyof ODStatScopeIds_DefaultUser>(id:StatsId): ODStatScopeIds_DefaultUser[StatsId]
remove(id:api.ODValidId): api.ODStat|null
remove(id:api.ODValidId): api.ODStat|null {
return super.remove(id)
}
exists(id:keyof ODStatScopeIds_DefaultUser): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getStat<StatsId extends keyof ODStatScopeIds_DefaultUser>(id:StatsId, scopeId:string): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null> {
return super.getStat(id,scopeId)
}
getAllStats<StatsId extends keyof ODStatScopeIds_DefaultUser>(id:StatsId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]> {
return super.getAllStats(id)
}
setStat<StatsId extends keyof ODStatScopeIds_DefaultUser>(id:StatsId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean> {
return super.setStat(id,scopeId,value,mode)
}
resetStat<StatsId extends keyof ODStatScopeIds_DefaultUser>(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null> {
return super.resetStat(id,scopeId)
}
}
/**## ODStatScopeIds_DefaultTicket `type`
* This interface is a list of ids available in the `ODStatScope_DefaultTicket` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODStatScopeIds_DefaultTicket {
"opendiscord:name":api.ODDynamicStat,
"opendiscord:status":api.ODDynamicStat,
"opendiscord:claimed":api.ODDynamicStat,
"opendiscord:pinned":api.ODDynamicStat,
"opendiscord:creation-date":api.ODDynamicStat,
"opendiscord:creator":api.ODDynamicStat,
"opendiscord:ticket-age":api.ODDynamicStat,
"opendiscord:response-time":api.ODDynamicStat,
"opendiscord:resolution-time":api.ODDynamicStat,
}
/**## ODStatScope_DefaultTicket `default_class`
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:ticket` category in `opendiscord.stats`!
*/
export class ODStatScope_DefaultTicket extends api.ODStatScope {
get<StatsId extends keyof ODStatScopeIds_DefaultTicket>(id:StatsId): ODStatScopeIds_DefaultTicket[StatsId]
get(id:api.ODValidId): api.ODStat|null
get(id:api.ODValidId): api.ODStat|null {
return super.get(id)
}
remove<StatsId extends keyof ODStatScopeIds_DefaultTicket>(id:StatsId): ODStatScopeIds_DefaultTicket[StatsId]
remove(id:api.ODValidId): api.ODStat|null
remove(id:api.ODValidId): api.ODStat|null {
return super.remove(id)
}
exists(id:keyof ODStatScopeIds_DefaultTicket): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getStat<StatsId extends keyof ODStatScopeIds_DefaultTicket>(id:StatsId, scopeId:string): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null> {
return super.getStat(id,scopeId)
}
getAllStats<StatsId extends keyof ODStatScopeIds_DefaultTicket>(id:StatsId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]> {
return super.getAllStats(id)
}
setStat<StatsId extends keyof ODStatScopeIds_DefaultTicket>(id:StatsId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean> {
return super.setStat(id,scopeId,value,mode)
}
resetStat<StatsId extends keyof ODStatScopeIds_DefaultTicket>(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null> {
return super.resetStat(id,scopeId)
}
}
/**## ODStatScopeIds_DefaultParticipants `type`
* This interface is a list of ids available in the `ODStatScope_DefaultParticipants` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODStatScopeIds_DefaultParticipants {
"opendiscord:participants":api.ODDynamicStat
}
/**## ODStatScope_DefaultParticipants `default_class`
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:participants` category in `opendiscord.stats`!
*/
export class ODStatScope_DefaultParticipants extends api.ODStatScope {
get<StatsId extends keyof ODStatScopeIds_DefaultParticipants>(id:StatsId): ODStatScopeIds_DefaultParticipants[StatsId]
get(id:api.ODValidId): api.ODStat|null
get(id:api.ODValidId): api.ODStat|null {
return super.get(id)
}
remove<StatsId extends keyof ODStatScopeIds_DefaultParticipants>(id:StatsId): ODStatScopeIds_DefaultParticipants[StatsId]
remove(id:api.ODValidId): api.ODStat|null
remove(id:api.ODValidId): api.ODStat|null {
return super.remove(id)
}
exists(id:keyof ODStatScopeIds_DefaultParticipants): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getStat<StatsId extends keyof ODStatScopeIds_DefaultParticipants>(id:StatsId, scopeId:string): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null> {
return super.getStat(id,scopeId)
}
getAllStats<StatsId extends keyof ODStatScopeIds_DefaultParticipants>(id:StatsId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]> {
return super.getAllStats(id)
}
setStat<StatsId extends keyof ODStatScopeIds_DefaultParticipants>(id:StatsId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean> {
return super.setStat(id,scopeId,value,mode)
}
resetStat<StatsId extends keyof ODStatScopeIds_DefaultParticipants>(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null> {
return super.resetStat(id,scopeId)
}
}
/**## ODStatScopeIds_DefaultMessages `type`
* This interface is a list of ids available in the `ODStatScope_DefaultMessages` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODStatScopeIds_DefaultMessages {
"opendiscord:count":api.ODDynamicStat
}
/**## ODStatScope_DefaultMessages `default_class`
* This is a special class that adds type definitions & typescript to the ODStatsManager class.
* It doesn't add any extra features!
*
* This default class is made for the `opendiscord:participants` category in `opendiscord.stats`!
*/
export class ODStatScope_DefaultMessages extends api.ODStatScope {
get<StatsId extends keyof ODStatScopeIds_DefaultMessages>(id:StatsId): ODStatScopeIds_DefaultMessages[StatsId]
get(id:api.ODValidId): api.ODStat|null
get(id:api.ODValidId): api.ODStat|null {
return super.get(id)
}
remove<StatsId extends keyof ODStatScopeIds_DefaultMessages>(id:StatsId): ODStatScopeIds_DefaultMessages[StatsId]
remove(id:api.ODValidId): api.ODStat|null
remove(id:api.ODValidId): api.ODStat|null {
return super.remove(id)
}
exists(id:keyof ODStatScopeIds_DefaultMessages): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getStat<StatsId extends keyof ODStatScopeIds_DefaultMessages>(id:StatsId, scopeId:string): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
getStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null> {
return super.getStat(id,scopeId)
}
getAllStats<StatsId extends keyof ODStatScopeIds_DefaultMessages>(id:StatsId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]>
getAllStats(id:api.ODValidId): Promise<{id:string,value:api.ODValidStatValue}[]> {
return super.getAllStats(id)
}
setStat<StatsId extends keyof ODStatScopeIds_DefaultMessages>(id:StatsId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean>
setStat(id:api.ODValidId, scopeId:string, value:api.ODValidStatValue, mode:api.ODStatScopeSetMode): Promise<boolean> {
return super.setStat(id,scopeId,value,mode)
}
resetStat<StatsId extends keyof ODStatScopeIds_DefaultMessages>(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null>
resetStat(id:api.ODValidId, scopeId:string): Promise<api.ODValidStatValue|null> {
return super.resetStat(id,scopeId)
}
}
-33
View File
@@ -1,33 +0,0 @@
///////////////////////////////////////
//DEFAULT WORKER MODULE
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODWorkerManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODWorkerManager class.
* It doesn't add any extra features!
*
* This default class is made for the worker manager in actions, builders & responders!
*/
export class ODWorkerManager_Default<Instance, Source extends string, Params, WorkerIds extends string> extends api.ODWorkerManager<Instance,Source,Params> {
get(id:WorkerIds): api.ODWorker<Instance,Source,Params>
get(id:api.ODValidId): api.ODWorker<Instance,Source,Params>|null
get(id:api.ODValidId): api.ODWorker<Instance,Source,Params>|null {
return super.get(id)
}
remove(id:WorkerIds): api.ODWorker<Instance,Source,Params>
remove(id:api.ODValidId): api.ODWorker<Instance,Source,Params>|null
remove(id:api.ODValidId): api.ODWorker<Instance,Source,Params>|null {
return super.remove(id)
}
exists(id:WorkerIds): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
@@ -2,9 +2,9 @@
//OPENTICKET OPTION MODULE //OPENTICKET OPTION MODULE
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
import { ODJsonConfig_DefaultOptionEmbedSettingsType, ODJsonConfig_DefaultOptionPingSettingsType } from "../defaults/config"
import * as discord from "discord.js" import * as discord from "discord.js"
import * as crypto from "crypto" import * as crypto from "crypto"
import { ODOptionsJsonConfig_TicketOptionEmbedSettings, ODOptionsJsonConfig_TicketOptionPingSettings } from "../mappings/config"
import { ODRoleUpdateMode } from "./role" import { ODRoleUpdateMode } from "./role"
/**## ODOptionManager `class` /**## ODOptionManager `class`
@@ -158,12 +158,12 @@ export interface ODTicketOptionIds {
"opendiscord:dm-message-enabled":ODOptionData<boolean>, "opendiscord:dm-message-enabled":ODOptionData<boolean>,
"opendiscord:dm-message-text":ODOptionData<string>, "opendiscord:dm-message-text":ODOptionData<string>,
"opendiscord:dm-message-embed":ODOptionData<ODJsonConfig_DefaultOptionEmbedSettingsType>, "opendiscord:dm-message-embed":ODOptionData<ODOptionsJsonConfig_TicketOptionEmbedSettings>,
"opendiscord:ticket-message-enabled":ODOptionData<boolean>, "opendiscord:ticket-message-enabled":ODOptionData<boolean>,
"opendiscord:ticket-message-text":ODOptionData<string>, "opendiscord:ticket-message-text":ODOptionData<string>,
"opendiscord:ticket-message-embed":ODOptionData<ODJsonConfig_DefaultOptionEmbedSettingsType>, "opendiscord:ticket-message-embed":ODOptionData<ODOptionsJsonConfig_TicketOptionEmbedSettings>,
"opendiscord:ticket-message-ping":ODOptionData<ODJsonConfig_DefaultOptionPingSettingsType>, "opendiscord:ticket-message-ping":ODOptionData<ODOptionsJsonConfig_TicketOptionPingSettings>,
"opendiscord:autoclose-enable-hours":ODOptionData<boolean>, "opendiscord:autoclose-enable-hours":ODOptionData<boolean>,
"opendiscord:autoclose-enable-leave":ODOptionData<boolean>, "opendiscord:autoclose-enable-leave":ODOptionData<boolean>,
@@ -2,7 +2,7 @@
//OPENTICKET PANEL MODULE //OPENTICKET PANEL MODULE
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
import { ODJsonConfig_DefaultPanelEmbedSettingsType } from "../defaults/config" import { ODPanelsJsonConfig_PanelEmbedSettings } from "../mappings/config"
/**## ODPanelManager `class` /**## ODPanelManager `class`
* This is an Open Ticket panel manager. * This is an Open Ticket panel manager.
@@ -58,7 +58,7 @@ export interface ODPanelIds {
"opendiscord:dropdown":ODPanelData<boolean>, "opendiscord:dropdown":ODPanelData<boolean>,
"opendiscord:text":ODPanelData<string>, "opendiscord:text":ODPanelData<string>,
"opendiscord:embed":ODPanelData<ODJsonConfig_DefaultPanelEmbedSettingsType>, "opendiscord:embed":ODPanelData<ODPanelsJsonConfig_PanelEmbedSettings>,
"opendiscord:dropdown-placeholder":ODPanelData<string>, "opendiscord:dropdown-placeholder":ODPanelData<string>,
@@ -2,7 +2,25 @@
//OPENTICKET PRIORITY MODULE //OPENTICKET PRIORITY MODULE
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
import * as discord from "discord.js"
/**## ODPriorityManagerIdConstraint `type`
* The constraint/layout for id mappings/interfaces of the `ODPriorityManager` class.
*/
export type ODPriorityManagerIdConstraint = Record<string,ODPriorityLevel>
/**## ODPriorityManagerIdMappings `interface`
* A list of all available IDs in the default `ODPriorityManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODPriorityManagerIdMappings extends ODPriorityManagerIdConstraint {
"opendiscord:urgent":ODPriorityLevel,
"opendiscord:very-high":ODPriorityLevel,
"opendiscord:high":ODPriorityLevel,
"opendiscord:normal":ODPriorityLevel,
"opendiscord:low":ODPriorityLevel,
"opendiscord:very-low":ODPriorityLevel,
"opendiscord:none":ODPriorityLevel,
}
/**## ODPriorityManager `class` /**## ODPriorityManager `class`
* This is an Open Ticket priority manager. * This is an Open Ticket priority manager.
@@ -11,7 +29,7 @@ import * as discord from "discord.js"
* *
* Priorities levels can be changed/updated/translated by plugins to allow for more customisability. * Priorities levels can be changed/updated/translated by plugins to allow for more customisability.
*/ */
export class ODPriorityManager extends api.ODManager<ODPriorityLevel> { export class ODPriorityManager<IdList extends ODPriorityManagerIdConstraint = ODPriorityManagerIdConstraint> extends api.ODManager<ODPriorityLevel> {
/**A reference to the Open Ticket debugger. */ /**A reference to the Open Ticket debugger. */
#debug: api.ODDebugger #debug: api.ODDebugger
@@ -28,44 +46,22 @@ export class ODPriorityManager extends api.ODManager<ODPriorityLevel> {
listAvailableLevels(){ listAvailableLevels(){
return this.getAll().map((lvl) => lvl.priority) return this.getAll().map((lvl) => lvl.priority)
} }
}
/**## ODPriorityManagerIds `type` get<PriorityId extends keyof api.ODNoGeneric<IdList>>(id:PriorityId): IdList[PriorityId]
* This interface is a list of ids available in the `ODPriorityManager` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODPriorityManagerIds {
"opendiscord:urgent":ODPriorityLevel,
"opendiscord:very-high":ODPriorityLevel,
"opendiscord:high":ODPriorityLevel,
"opendiscord:normal":ODPriorityLevel,
"opendiscord:low":ODPriorityLevel,
"opendiscord:very-low":ODPriorityLevel,
"opendiscord:none":ODPriorityLevel,
}
/**## ODPriorityManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODPriorityManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.priorities`!
*/
export class ODPriorityManager_Default extends ODPriorityManager {
get<PriorityId extends keyof ODPriorityManagerIds>(id:PriorityId): ODPriorityManagerIds[PriorityId]
get(id:api.ODValidId): ODPriorityLevel|null get(id:api.ODValidId): ODPriorityLevel|null
get(id:api.ODValidId): ODPriorityLevel|null { get(id:api.ODValidId): ODPriorityLevel|null {
return super.get(id) return super.get(id)
} }
remove<PriorityId extends keyof ODPriorityManagerIds>(id:PriorityId): ODPriorityManagerIds[PriorityId] remove<PriorityId extends keyof api.ODNoGeneric<IdList>>(id:PriorityId): IdList[PriorityId]
remove(id:api.ODValidId): ODPriorityLevel|null remove(id:api.ODValidId): ODPriorityLevel|null
remove(id:api.ODValidId): ODPriorityLevel|null { remove(id:api.ODValidId): ODPriorityLevel|null {
return super.remove(id) return super.remove(id)
} }
exists(id:keyof ODPriorityManagerIds): boolean exists(id:keyof api.ODNoGeneric<IdList>): boolean
exists(id:api.ODValidId): boolean exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean { exists(id:api.ODValidId): boolean {
@@ -73,6 +69,11 @@ export class ODPriorityManager_Default extends ODPriorityManager {
} }
} }
/**## ODMappedPriorityManager `class
* A special class with types for the Open Ticket `ODPriorityManager` class.
*/
export class ODMappedPriorityManager extends ODPriorityManager<ODPriorityManagerIdMappings> {}
/**## ODPriorityLevel `class` /**## ODPriorityLevel `class`
* This is an Open Ticket priority level. * This is an Open Ticket priority level.
* *
@@ -2,7 +2,6 @@
//OPENTICKET TICKET MODULE //OPENTICKET TICKET MODULE
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
import { ODClientManager_Default } from "../defaults/client"
import { ODTicketOption } from "./option" import { ODTicketOption } from "./option"
import * as discord from "discord.js" import * as discord from "discord.js"
@@ -17,11 +16,11 @@ export class ODTicketManager extends api.ODManager<ODTicket> {
/**A reference to the main server of the bot */ /**A reference to the main server of the bot */
#guild: discord.Guild|null = null #guild: discord.Guild|null = null
/**A reference to the Open Ticket client manager. */ /**A reference to the Open Ticket client manager. */
#client: ODClientManager_Default #client: api.ODClientManager
/**A reference to the Open Ticket debugger. */ /**A reference to the Open Ticket debugger. */
#debug: api.ODDebugger #debug: api.ODDebugger
constructor(debug:api.ODDebugger, client:ODClientManager_Default){ constructor(debug:api.ODDebugger, client:api.ODClientManager){
super(debug,"ticket") super(debug,"ticket")
this.#debug = debug this.#debug = debug
this.#client = client this.#client = client
@@ -2,10 +2,23 @@
//OPENTICKET TRANSCRIPT MODULE //OPENTICKET TRANSCRIPT MODULE
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
import { ODPermissionManager_Default } from "../defaults/permission"
import { ODTicket, ODTicketManager } from "./ticket" import { ODTicket, ODTicketManager } from "./ticket"
import * as discord from "discord.js" import * as discord from "discord.js"
/**## ODTranscriptManagerIdConstraint `type`
* The constraint/layout for id mappings/interfaces of the `ODTranscriptManager` class.
*/
export type ODTranscriptManagerIdConstraint = Record<string,ODTranscriptCompiler<any,null|object>>
/**## ODTranscriptManagerIdMappings `interface`
* A list of all available IDs in the default `ODTranscriptManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODTranscriptManagerIdMappings extends ODTranscriptManagerIdConstraint {
"opendiscord:html-compiler":ODTranscriptCompiler<{url:string,availableUntil:Date},{auth:string}>,
"opendiscord:text-compiler":ODTranscriptCompiler<{contents:string},null>,
}
/**## ODTranscriptManager `class` /**## ODTranscriptManager `class`
* This is an Open Ticket transcript manager. * This is an Open Ticket transcript manager.
* *
@@ -13,19 +26,45 @@ import * as discord from "discord.js"
* *
* The 2 default built-in transcript generators are: `opendiscord:html-compiler` & `opendiscord:text-compiler`. * The 2 default built-in transcript generators are: `opendiscord:html-compiler` & `opendiscord:text-compiler`.
*/ */
export class ODTranscriptManager extends api.ODManager<ODTranscriptCompiler<any,null|object>> { export class ODTranscriptManager<IdList extends ODTranscriptManagerIdConstraint = ODTranscriptManagerIdConstraint> extends api.ODManager<ODTranscriptCompiler<any,null|object>> {
/**The manager responsible for collecting all messages in a channel. */ /**The manager responsible for collecting all messages in a channel. */
collector: ODTranscriptCollector collector: ODTranscriptCollector
/**Alias for the client manager. */ /**Alias for the client manager. */
#client: api.ODClientManager #client: api.ODClientManager
constructor(debug:api.ODDebugger, tickets:ODTicketManager, client:api.ODClientManager, permissions:ODPermissionManager_Default){ constructor(debug:api.ODDebugger, tickets:ODTicketManager, client:api.ODClientManager, permissions:api.ODPermissionManager){
super(debug,"transcript compiler") super(debug,"transcript compiler")
this.#client = client this.#client = client
this.collector = new ODTranscriptCollector(tickets,client,permissions) this.collector = new ODTranscriptCollector(tickets,client,permissions)
} }
get<CompilerId extends keyof api.ODNoGeneric<IdList>>(id:CompilerId): IdList[CompilerId]
get(id:api.ODValidId): ODTranscriptCompiler<any,null|object>|null
get(id:api.ODValidId): ODTranscriptCompiler<any,null|object>|null {
return super.get(id)
}
remove<CompilerId extends keyof api.ODNoGeneric<IdList>>(id:CompilerId): IdList[CompilerId]
remove(id:api.ODValidId): ODTranscriptCompiler<any,null|object>|null
remove(id:api.ODValidId): ODTranscriptCompiler<any,null|object>|null {
return super.remove(id)
}
exists(id:keyof api.ODNoGeneric<IdList>): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
} }
/**## ODMappedTranscriptManager `class
* A special class with types for the Open Ticket `ODTranscriptManager` class.
*/
export class ODMappedTranscriptManager extends ODTranscriptManager<ODTranscriptManagerIdMappings> {}
/**## ODTranscriptCompilerInitFunction `type` /**## ODTranscriptCompilerInitFunction `type`
* This function will initiate/prepare the transcript system for an incoming transcript. * This function will initiate/prepare the transcript system for an incoming transcript.
*/ */
@@ -114,44 +153,6 @@ export class ODTranscriptCompiler<Data extends object,InitData extends (object|n
} }
} }
/**## ODTranscriptCompilerIds `type`
* This interface is a list of ids available in the `ODTranscriptCompiler` class.
* It's used to generate typescript declarations for this class.
*/
export interface ODTranscriptCompilerIds {
"opendiscord:html-compiler":ODTranscriptCompiler<{url:string,availableUntil:Date},{auth:string}>,
"opendiscord:text-compiler":ODTranscriptCompiler<{contents:string},null>,
}
/**## ODTranscriptManager_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODTranscriptManager class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.transcripts`!
*/
export class ODTranscriptManager_Default extends ODTranscriptManager {
get<CompilerId extends keyof ODTranscriptCompilerIds>(id:CompilerId): ODTranscriptCompilerIds[CompilerId]
get(id:api.ODValidId): ODTranscriptCompiler<any,null|object>|null
get(id:api.ODValidId): ODTranscriptCompiler<any,null|object>|null {
return super.get(id)
}
remove<CompilerId extends keyof ODTranscriptCompilerIds>(id:CompilerId): ODTranscriptCompilerIds[CompilerId]
remove(id:api.ODValidId): ODTranscriptCompiler<any,null|object>|null
remove(id:api.ODValidId): ODTranscriptCompiler<any,null|object>|null {
return super.remove(id)
}
exists(id:keyof ODTranscriptCompilerIds): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODTranscriptCollector `class` /**## ODTranscriptCollector `class`
* This is an Open Ticket transcript collector. * This is an Open Ticket transcript collector.
* *
@@ -165,9 +166,9 @@ export class ODTranscriptCollector {
/**Alias for the client manager. */ /**Alias for the client manager. */
#client: api.ODClientManager #client: api.ODClientManager
/**Alias for the permissions manager. */ /**Alias for the permissions manager. */
#permissions: ODPermissionManager_Default #permissions: api.ODPermissionManager
constructor(tickets:ODTicketManager,client:api.ODClientManager,permissions:ODPermissionManager_Default){ constructor(tickets:ODTicketManager,client:api.ODClientManager,permissions:api.ODPermissionManager){
this.#tickets = tickets this.#tickets = tickets
this.#client = client this.#client = client
this.#permissions = permissions this.#permissions = permissions
+11 -62
View File
@@ -1,8 +1,7 @@
import {opendiscord, api, utilities} from "../../index" import {opendiscord, api, utilities} from "../../index"
import {Terminal, terminal} from "terminal-kit" import * as cli from "@open-discord-bots/framework/cli"
import ansis from "ansis"
const logo = [ export const logo = [
" ██████╗ ██████╗ ███████╗███╗ ██╗ ████████╗██╗ ██████╗██╗ ██╗███████╗████████╗ ", " ██████╗ ██████╗ ███████╗███╗ ██╗ ████████╗██╗ ██████╗██╗ ██╗███████╗████████╗ ",
" ██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ╚══██╔══╝██║██╔════╝██║ ██╔╝██╔════╝╚══██╔══╝ ", " ██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ╚══██╔══╝██║██╔════╝██║ ██╔╝██╔════╝╚══██╔══╝ ",
" ██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ ██║██║ █████╔╝ █████╗ ██║ ", " ██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ ██║██║ █████╔╝ █████╗ ██║ ",
@@ -10,66 +9,16 @@ const logo = [
" ╚██████╔╝██║ ███████╗██║ ╚████║ ██║ ██║╚██████╗██║ ██╗███████╗ ██║ ", " ╚██████╔╝██║ ███████╗██║ ╚████║ ██║ ██║╚██████╗██║ ██╗███████╗ ██║ ",
" ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝ " " ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝ "
] ]
export const headerOpts: cli.ODCliHeaderOpts = {
/**A utility function to center text to a certain width. */ logo,
export function centerText(text:string,width:number){ projectColor:"#f8ba00",
if (width < text.length) return text projectName:"Open Ticket",
let newWidth = width-ansis.strip(text).length+1 projectVersion:opendiscord.versions.get("opendiscord:version")
let final = " ".repeat(newWidth/2)+text
return final
}
/**A utility function to terminate the interactive CLI. */
export async function terminate(){
terminal.grabInput(false)
terminal.clear()
terminal.green("👋 Exited the Open Ticket Interactive Setup CLI.\n")
process.exit(0)
}
terminal.on("key",(name,matches,data) => {
if (name == "CTRL_C") terminate()
})
/**Render the header of the interactive CLI. */
export function renderHeader(path:(string|number)[]|string){
terminal.grabInput(true)
terminal.clear().moveTo(1,1)
terminal(ansis.hex("#f8ba00")(logo.join("\n")+"\n"))
terminal.bold(centerText("Interactive Setup CLI - Version: "+opendiscord.versions.get("opendiscord:version").toString()+" - Support: https://discord.dj-dj.be\n",88))
if (typeof path == "string") terminal.cyan(centerText(path+"\n\n",88))
else if (path.length < 1) terminal.cyan(centerText("👋 Hi! Welcome to the Open Ticket Interactive Setup CLI! 👋\n\n",88))
else terminal.cyan(centerText("🌐 Current Location: "+path.map((v,i) => {
if (i == 0) return v.toString()
else if (typeof v == "string") return ".\""+v+"\""
else if (typeof v == "number") return "."+v
}).join("")+"\n\n",88))
}
async function renderCliModeSelector(backFn:(() => api.ODPromiseVoid)){
renderHeader([])
terminal(ansis.bold.green("Please select what CLI module you want to use.\n")+ansis.italic.gray("(use arrow keys to navigate, exit using escape)\n"))
const answer = await terminal.singleColumnMenu([
"✏️ Edit Config "+ansis.gray("=> Edit the current config, add/remove new tickets/questions/panels & more!"),
"⏱️ Quick Setup "+ansis.gray("=> A quick and easy way of setting up the bot in your Discord server."),
],{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
else if (answer.selectedIndex == 0) await (await import("./editConfig.js")).renderEditConfig(async () => {await renderCliModeSelector(backFn)})
else if (answer.selectedIndex == 1) await (await import("./quickSetup.js")).renderQuickSetup(async () => {await renderCliModeSelector(backFn)})
} }
export async function execute(){ export async function execute(){
if (terminal.width < 100 || terminal.height < 35){ const editConfig = new cli.ODCliEditConfigInstance(headerOpts,opendiscord)
terminal(ansis.red.bold("\n\nMake sure your console or cmd window has a "+ansis.cyan("minimum width & height")+" of "+ansis.cyan("100x35")+" characters.")) const renderQuickSetup = (await import("./quickSetup.js")).renderQuickSetup
terminal(ansis.red.bold("\nOtherwise the Open Ticket Interactive Setup CLI will be rendered incorrectly."))
terminal(ansis.red.bold("\nThe current terminal dimensions are: "+ansis.cyan(terminal.width+"x"+terminal.height)+".")) await cli.execute(headerOpts,editConfig.renderEditConfig,renderQuickSetup)
}else await renderCliModeSelector(terminate)
} }
-933
View File
@@ -1,933 +0,0 @@
import {opendiscord, utilities, api } from "../../index"
import {Terminal, terminal} from "terminal-kit"
import ansis from "ansis"
import {renderHeader} from "./cli"
export async function renderEditConfig(backFn:(() => api.ODPromiseVoid)){
renderHeader([])
terminal(ansis.bold.green("Please select which config you would like to edit.\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
const checkerList = opendiscord.checkers.getAll()
const checkerNameList = checkerList.map((checker) => (checker.options.cliDisplayName ? checker.options.cliDisplayName+" ("+checker.config.file+")" : checker.config.file))
const checkerNameLength = utilities.getLongestLength(checkerNameList)
const finalCheckerNameList = checkerNameList.map((name,index) => name.padEnd(checkerNameLength+5," ")+ansis.gray(checkerList[index].options.cliDisplayDescription ? "=> "+checkerList[index].options.cliDisplayDescription : ""))
const answer = await terminal.singleColumnMenu(finalCheckerNameList,{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
const checker = checkerList[answer.selectedIndex]
const configData = checker.config.data as api.ODValidJsonType
await chooseConfigStructure(checker,async () => {await renderEditConfig(backFn)},checker.structure,configData,{},NaN,["("+checker.config.path+")"])
}
async function chooseConfigStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerStructure,data:api.ODValidJsonType,parent:object|any[],parentIndex:string|number,path:(string|number)[]){
if (structure instanceof api.ODCheckerObjectStructure && typeof data == "object" && !Array.isArray(data) && data) await renderConfigObjectStructureSelector(checker,backFn,structure,data,parent,parentIndex,path)
else if (structure instanceof api.ODCheckerEnabledObjectStructure && typeof data == "object" && !Array.isArray(data) && data) await renderConfigEnabledObjectStructureSelector(checker,backFn,structure,data,parent,parentIndex,path)
else if (structure instanceof api.ODCheckerObjectSwitchStructure && typeof data == "object" && !Array.isArray(data) && data) await renderConfigObjectSwitchStructureSelector(checker,backFn,structure,data,parent,parentIndex,path)
else if (structure instanceof api.ODCheckerArrayStructure && Array.isArray(data)) await renderConfigArrayStructureSelector(checker,backFn,structure,data,parent,parentIndex,path)
else if (structure instanceof api.ODCheckerBooleanStructure && typeof data == "boolean") await renderConfigBooleanStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)
else if (structure instanceof api.ODCheckerNumberStructure && typeof data == "number") await renderConfigNumberStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)
else if (structure instanceof api.ODCheckerStringStructure && typeof data == "string") await renderConfigStringStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)
else if (structure instanceof api.ODCheckerNullStructure && data === null) await renderConfigNullStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)
else if (structure instanceof api.ODCheckerTypeSwitchStructure) await renderConfigTypeSwitchStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)
else terminal.red.bold("❌ Unable to detect type of variable! Please try to edit this property in the JSON file itself!")
}
async function renderConfigObjectStructureSelector(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerObjectStructure,data:object,parent:object,parentIndex:string|number,path:(string|number)[]){
if (typeof data != "object" || Array.isArray(data)) throw new api.ODSystemError("OT CLI => Property is not of the type 'object'. Please check your config for possible errors. (index: "+parentIndex+", path: "+path.join(".")+")")
renderHeader(path)
terminal(ansis.bold.green("Please select which variable you would like to edit.\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
if (!structure.options.children) return await backFn()
if (structure.options.cliDisplayName){
terminal.gray("\nProperty: "+ansis.bold.blue(structure.options.cliDisplayName)+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
}
const list = structure.options.children.filter((child) => !child.cliHideInEditMode)
const nameList = list.map((child) => (child.checker.options.cliDisplayName ? child.checker.options.cliDisplayName : child.key))
const nameLength = utilities.getLongestLength(nameList)
const finalnameList = nameList.map((name,index) => name.padEnd(nameLength+5," ")+ansis.gray((!list[index].checker.options.cliHideDescriptionInParent && list[index].checker.options.cliDisplayDescription) ? "=> "+list[index].checker.options.cliDisplayDescription : ""))
const answer = await terminal.singleColumnMenu(finalnameList,{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold.defaultColor,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
const subStructure = list[answer.selectedIndex]
const subData = data[subStructure.key]
await chooseConfigStructure(checker,async () => {await renderConfigObjectStructureSelector(checker,backFn,structure,data,parent,parentIndex,path)},subStructure.checker,subData,data,subStructure.key,[...path,subStructure.key])
}
async function renderConfigEnabledObjectStructureSelector(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerEnabledObjectStructure,data:object,parent:object,parentIndex:string|number,path:(string|number)[]){
if (typeof data != "object" || Array.isArray(data)) throw new api.ODSystemError("OT CLI => Property is not of the type 'object'. Please check your config for possible errors. (index: "+parentIndex+", path: "+path.join(".")+")")
const enabledProperty = structure.options.property
const subStructure = structure.options.checker
if (!enabledProperty || !subStructure || !subStructure.options.children) return await backFn()
if (!subStructure.options.children.find((child) => child.key === structure.options.property)){
if (typeof structure.options.enabledValue == "string") subStructure.options.children.unshift({key:enabledProperty,optional:false,priority:1,checker:new api.ODCheckerStringStructure("opendiscord:CLI-checker-enabled-object-structure",{})})
else if (typeof structure.options.enabledValue == "number") subStructure.options.children.unshift({key:enabledProperty,optional:false,priority:1,checker:new api.ODCheckerNumberStructure("opendiscord:CLI-checker-enabled-object-structure",{})})
else if (typeof structure.options.enabledValue == "boolean") subStructure.options.children.unshift({key:enabledProperty,optional:false,priority:1,checker:new api.ODCheckerBooleanStructure("opendiscord:CLI-checker-enabled-object-structure",{})})
}
await chooseConfigStructure(checker,backFn,subStructure,data,parent,parentIndex,path)
}
async function renderConfigObjectSwitchStructureSelector(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerObjectSwitchStructure,data:object,parent:object,parentIndex:string|number,path:(string|number)[]){
if (typeof data != "object" || Array.isArray(data)) throw new api.ODSystemError("OT CLI => Property is not of the type 'object'. Please check your config for possible errors. (index: "+parentIndex+", path: "+path.join(".")+")")
if (!structure.options.objects) return await backFn()
let didMatch: boolean = false
for (const objectTemplate of structure.options.objects){
if (objectTemplate.properties.every((prop) => data[prop.key] === prop.value)){
//object template matches data
const subStructure = objectTemplate.checker
didMatch = true
await chooseConfigStructure(checker,backFn,subStructure,data,parent,parentIndex,path)
}
}
if (!didMatch) throw new api.ODSystemError("OT CLI => Unable to detect type of object in the object switch. Please check your config for possible errors. (index: "+parentIndex+", path: "+path.join(".")+")")
}
async function renderConfigArrayStructureSelector(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerArrayStructure,data:any[],parent:object,parentIndex:string|number,path:(string|number)[]){
if (!Array.isArray(data)) throw new api.ODSystemError("OT CLI => Property is not of the type 'array'. Please check your config for possible errors. (index: "+parentIndex+", path: "+path.join(".")+")")
renderHeader(path)
terminal(ansis.bold.green("Please select what you would like to do.\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
if (!structure.options.propertyChecker) return await backFn()
if (structure.options.cliDisplayName || typeof parentIndex == "string" || !isNaN(parentIndex)){
terminal.gray("\nProperty: "+ansis.bold.blue(structure.options.cliDisplayName ?? parentIndex.toString())+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
}
const propertyName = structure.options.cliDisplayPropertyName ?? "index"
const answer = await terminal.singleColumnMenu(data.length < 1 ? ["Add "+propertyName] : [
"Add "+propertyName,
"Edit "+propertyName,
"Move "+propertyName,
"Remove "+propertyName,
"Duplicate "+propertyName
],{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
const backFnFunc = async () => {await renderConfigArrayStructureSelector(checker,backFn,structure,data,parent,parentIndex,path)}
if (answer.canceled) return await backFn()
if (answer.selectedIndex == 0) await chooseAdditionConfigStructure(checker,backFnFunc,async (newData) => {
data[data.length] = newData
await checker.config.save()
await backFnFunc()
},structure.options.propertyChecker,data,data.length,path,[])
else if (answer.selectedIndex == 1) await renderConfigArrayStructureEditSelector(checker,backFnFunc,structure,structure.options.propertyChecker,data,parent,parentIndex,path)
else if (answer.selectedIndex == 2) await renderconfigArrayStructureMoveSelector(checker,backFnFunc,structure,structure.options.propertyChecker,data,parent,parentIndex,path)
else if (answer.selectedIndex == 3) await renderconfigArrayStructureRemoveSelector(checker,backFnFunc,structure,structure.options.propertyChecker,data,parent,parentIndex,path)
else if (answer.selectedIndex == 4) await renderConfigArrayStructureDuplicateSelector(checker,backFnFunc,structure,structure.options.propertyChecker,data,parent,parentIndex,path)
}
async function renderConfigArrayStructureEditSelector(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),arrayStructure:api.ODCheckerArrayStructure,structure:api.ODCheckerStructure,data:any[],parent:object,parentIndex:string|number,path:(string|number)[]){
const propertyName = arrayStructure.options.cliDisplayPropertyName ?? "index"
renderHeader(path)
terminal(ansis.bold.green("Please select the "+propertyName+" you would like to edit.\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
const longestDataListName = Math.max(...data.map((d,i) => getArrayPreviewStructureNameLength(structure,d,data,i)))
const dataList = data.map((d,i) => (i+1)+". "+getArrayPreviewFromStructure(structure,d,data,i,longestDataListName))
const dataAnswer = await terminal.singleColumnMenu(dataList,{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (dataAnswer.canceled) return await backFn()
const subData = data[dataAnswer.selectedIndex]
await chooseConfigStructure(checker,async () => {await renderConfigArrayStructureEditSelector(checker,backFn,arrayStructure,structure,data,parent,parentIndex,path)},structure,subData,data,dataAnswer.selectedIndex,[...path,dataAnswer.selectedIndex])
}
async function renderconfigArrayStructureMoveSelector(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),arrayStructure:api.ODCheckerArrayStructure,structure:api.ODCheckerStructure,data:any[],parent:object,parentIndex:string|number,path:(string|number)[]){
const propertyName = arrayStructure.options.cliDisplayPropertyName ?? "index"
renderHeader(path)
terminal(ansis.bold.green("Please select the "+propertyName+" you would like to move.\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
const longestDataListName = Math.max(...data.map((d,i) => getArrayPreviewStructureNameLength(structure,d,data,i)))
const dataList = data.map((d,i) => (i+1)+". "+getArrayPreviewFromStructure(structure,d,data,i,longestDataListName))
const dataAnswer = await terminal.singleColumnMenu(dataList,{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (dataAnswer.canceled) return await backFn()
renderHeader([...path,dataAnswer.selectedIndex])
terminal(ansis.bold.green("Please select the position you would like to move to.\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
const moveAnswer = await terminal.singleColumnMenu(data.map((d,i) => "Position "+(i+1)),{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (moveAnswer.canceled) return await renderconfigArrayStructureMoveSelector(checker,backFn,arrayStructure,structure,data,parent,parentIndex,path)
const subData = data[dataAnswer.selectedIndex]
const slicedData = [...data.slice(0,dataAnswer.selectedIndex),...data.slice(dataAnswer.selectedIndex+1)]
const insertedData = [...slicedData.slice(0,moveAnswer.selectedIndex),subData,...slicedData.slice(moveAnswer.selectedIndex)]
insertedData.forEach((d,i) => data[i] = d)
await checker.config.save()
terminal.bold.blue("\n\n✅ Property moved succesfully!")
await utilities.timer(400)
await backFn()
}
async function renderconfigArrayStructureRemoveSelector(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),arrayStructure:api.ODCheckerArrayStructure,structure:api.ODCheckerStructure,data:any[],parent:object,parentIndex:string|number,path:(string|number)[]){
const propertyName = arrayStructure.options.cliDisplayPropertyName ?? "index"
renderHeader(path)
terminal(ansis.bold.green("Please select the "+propertyName+" you would like to delete.\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
const longestDataListName = Math.max(...data.map((d,i) => getArrayPreviewStructureNameLength(structure,d,data,i)))
const dataList = data.map((d,i) => (i+1)+". "+getArrayPreviewFromStructure(structure,d,data,i,longestDataListName))
const dataAnswer = await terminal.singleColumnMenu(dataList,{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (dataAnswer.canceled) return await backFn()
data.splice(dataAnswer.selectedIndex,1)
await checker.config.save()
terminal.bold.blue("\n\n✅ Property deleted succesfully!")
await utilities.timer(400)
await backFn()
}
async function renderConfigArrayStructureDuplicateSelector(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),arrayStructure:api.ODCheckerArrayStructure,structure:api.ODCheckerStructure,data:any[],parent:object,parentIndex:string|number,path:(string|number)[]){
const propertyName = arrayStructure.options.cliDisplayPropertyName ?? "index"
renderHeader(path)
terminal(ansis.bold.green("Please select the "+propertyName+" you would like to duplicate.\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
const longestDataListName = Math.max(...data.map((d,i) => getArrayPreviewStructureNameLength(structure,d,data,i)))
const dataList = data.map((d,i) => (i+1)+". "+getArrayPreviewFromStructure(structure,d,data,i,longestDataListName))
const dataAnswer = await terminal.singleColumnMenu(dataList,{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (dataAnswer.canceled) return await backFn()
data.push(JSON.parse(JSON.stringify(data[dataAnswer.selectedIndex])))
await checker.config.save()
terminal.bold.blue("\n\n✅ Property duplicated succesfully!")
await utilities.timer(400)
await backFn()
}
async function renderConfigBooleanStructureEditor(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerBooleanStructure,data:boolean,parent:object,parentIndex:string|number,path:(string|number)[]){
if (typeof data != "boolean") throw new api.ODSystemError("OT CLI => Property is not of the type 'boolean'. Please check your config for possible errors. (index: "+parentIndex+", path: "+path.join(".")+")")
renderHeader(path)
terminal(ansis.bold.green("You are now editing "+(typeof parentIndex == "string" ? "the boolean property "+ansis.blue("\""+parentIndex+"\"") : "boolean property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
terminal.gray("\nCurrent value: "+ansis.bold[data ? "green" : "red"](data.toString())+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const answer = await terminal.singleColumnMenu(["false (Disabled)","true (Enabled)"],{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
//run config checker
const newValue = (answer.selectedIndex == 0) ? false : true
const newPath = [...path]
newPath.shift()
checker.messages = [] //manually clear previous messages
const isDataValid = structure.check(checker,newValue,newPath)
if (isDataValid){
parent[parentIndex] = newValue
await checker.config.save()
terminal.bold.blue("\n\n✅ Variable saved succesfully!")
await utilities.timer(400)
await backFn()
}else{
const messages = checker.messages.map((msg) => "=> ["+msg.type.toUpperCase()+"] "+msg.message).join("\n")
terminal.bold.blue("\n\n❌ Variable is invalid! Please try again!")
terminal.gray("\n"+messages)
await utilities.timer(1000+(2000*checker.messages.length))
await renderConfigBooleanStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)
}
}
async function renderConfigNumberStructureEditor(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerNumberStructure,data:number,parent:object,parentIndex:string|number,path:(string|number)[],prefillValue?:string){
if (typeof data != "number") throw new api.ODSystemError("OT CLI => Property is not of the type 'number'. Please check your config for possible errors. (index: "+parentIndex+", path: "+path.join(".")+")")
renderHeader(path)
terminal(ansis.bold.green("You are now editing "+(typeof parentIndex == "string" ? "the number property "+ansis.blue("\""+parentIndex+"\"") : "number property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(insert a new value and press enter, go back using escape)\n"))
terminal.gray("\nCurrent value: "+ansis.bold.blue(data.toString())+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const answer = await terminal.inputField({
default:prefillValue,
style:terminal.cyan,
cancelable:true
}).promise
if (typeof answer != "string") return await backFn()
//run config checker
const newValue = Number(answer.replaceAll(",","."))
const newPath = [...path]
newPath.shift()
checker.messages = [] //manually clear previous messages
const isDataValid = structure.check(checker,newValue,newPath)
if (isDataValid){
parent[parentIndex] = newValue
await checker.config.save()
terminal.bold.blue("\n\n✅ Variable saved succesfully!")
await utilities.timer(400)
await backFn()
}else{
const messages = checker.messages.map((msg) => "=> ["+msg.type.toUpperCase()+"] "+msg.message).join("\n")
terminal.bold.blue("\n\n❌ Variable is invalid! Please try again!")
terminal.red("\n"+messages)
await utilities.timer(1000+(2000*checker.messages.length))
await renderConfigNumberStructureEditor(checker,backFn,structure,data,parent,parentIndex,path,answer)
}
}
async function renderConfigStringStructureEditor(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerStringStructure,data:string,parent:object,parentIndex:string|number,path:(string|number)[],prefillValue?:string){
if (typeof data != "string") throw new api.ODSystemError("OT CLI => Property is not of the type 'string'. Please check your config for possible errors. (index: "+parentIndex+", path: "+path.join(".")+")")
renderHeader(path)
terminal(ansis.bold.green("You are now editing "+(typeof parentIndex == "string" ? "the string property "+ansis.blue("\""+parentIndex+"\"") : "string property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(insert a new value and press enter, go back using escape)\n"))
terminal.gray("\nCurrent value:"+(data.includes("\n") ? "\n" : " \"")+ansis.bold.blue(data)+ansis.gray(!data.includes("\n") ? "\"\n" : "\n"))
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const customExtraOptions = (structure instanceof api.ODCheckerCustomStructure_DiscordId) ? structure.extraOptions : undefined
const customAutocompleteFunc = structure.options.cliAutocompleteFunc ? await structure.options.cliAutocompleteFunc() : null
const autocompleteList = ((customAutocompleteFunc ?? structure.options.cliAutocompleteList) ?? customExtraOptions) ?? structure.options.choices
const autoCompleteMenuOpts: Terminal.SingleLineMenuOptions = {
style:terminal.white,
selectedStyle:terminal.bgBlue.white
}
const input = terminal.inputField({
default:prefillValue,
style:terminal.cyan,
hintStyle:terminal.gray,
cancelable:false,
autoComplete:autocompleteList,
autoCompleteHint:(!!autocompleteList),
autoCompleteMenu:(autocompleteList) ? autoCompleteMenuOpts as Terminal.Autocompletion : false
})
terminal.on("key",async (name:string,matches:string[],data:object) => {
if (name == "ESCAPE"){
terminal.removeListener("key","cli-render-string-structure-edit")
input.abort()
await backFn()
}
},({id:"cli-render-string-structure-edit"} as any))
const answer = await input.promise
terminal.removeListener("key","cli-render-string-structure-edit")
if (typeof answer != "string") return
//run config checker
const newValue = answer.replaceAll("\\n","\n")
const newPath = [...path]
newPath.shift()
checker.messages = [] //manually clear previous messages
const isDataValid = structure.check(checker,newValue,newPath)
if (isDataValid){
parent[parentIndex] = newValue
await checker.config.save()
terminal.bold.blue("\n\n✅ Variable saved succesfully!")
await utilities.timer(400)
await backFn()
}else{
const messages = checker.messages.map((msg) => "=> ["+msg.type.toUpperCase()+"] "+msg.message).join("\n")
terminal.bold.blue("\n\n❌ Variable is invalid! Please try again!")
terminal.red("\n"+messages)
await utilities.timer(1000+(2000*checker.messages.length))
await renderConfigStringStructureEditor(checker,backFn,structure,data,parent,parentIndex,path,answer)
}
}
async function renderConfigNullStructureEditor(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerNullStructure,data:null,parent:object,parentIndex:string|number,path:(string|number)[]){
if (data !== null) throw new api.ODSystemError("OT CLI => Property is not of the type 'null'. Please check your config for possible errors. (index: "+parentIndex+", path: "+path.join(".")+")")
renderHeader(path)
terminal(ansis.bold.green("You are now editing "+(typeof parentIndex == "string" ? "the null property "+ansis.blue("\""+parentIndex+"\"") : "null property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
terminal.gray("\nCurrent value: "+ansis.bold.blue("null")+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const answer = await terminal.singleColumnMenu(["null"],{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
//run config checker
const newValue = null
const newPath = [...path]
newPath.shift()
checker.messages = [] //manually clear previous messages
const isDataValid = structure.check(checker,newValue,newPath)
if (isDataValid){
parent[parentIndex] = newValue
await checker.config.save()
terminal.bold.blue("\n\n✅ Variable saved succesfully!")
await utilities.timer(400)
await backFn()
}else{
const messages = checker.messages.map((msg) => "=> ["+msg.type.toUpperCase()+"] "+msg.message).join("\n")
terminal.bold.blue("\n\n❌ Variable is invalid! Please try again!")
terminal.red("\n"+messages)
await utilities.timer(1000+(2000*checker.messages.length))
await renderConfigNullStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)
}
}
async function renderConfigTypeSwitchStructureEditor(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),structure:api.ODCheckerTypeSwitchStructure,data:any,parent:object,parentIndex:string|number,path:(string|number)[]){
renderHeader(path)
terminal(ansis.bold.green("You are now editing "+(typeof parentIndex == "string" ? "the property "+ansis.blue("\""+parentIndex+"\"") : "property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
terminal.gray("\nCurrent value: "+ansis.bold.blue(data.toString())+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const actionsList: string[] = []
if (structure.options.boolean) actionsList.push("Edit as boolean")
if (structure.options.string) actionsList.push("Edit as string")
if (structure.options.number) actionsList.push("Edit as number")
if (structure.options.object) actionsList.push("Edit as object")
if (structure.options.array) actionsList.push("Edit as array/list")
if (structure.options.null) actionsList.push("Edit as null")
const answer = await terminal.singleColumnMenu(actionsList,{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
//run selected structure editor (untested)
if (answer.selectedText.startsWith("Edit as boolean") && structure.options.boolean) await renderConfigBooleanStructureEditor(checker,async () => {await renderConfigTypeSwitchStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)},structure.options.boolean,false,parent,parentIndex,path)
else if (answer.selectedText.startsWith("Edit as string") && structure.options.string) await renderConfigStringStructureEditor(checker,async () => {await renderConfigTypeSwitchStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)},structure.options.string,data.toString(),parent,parentIndex,path)
else if (answer.selectedText.startsWith("Edit as number") && structure.options.number) await renderConfigNumberStructureEditor(checker,async () => {await renderConfigTypeSwitchStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)},structure.options.number,0,parent,parentIndex,path)
else if (answer.selectedText.startsWith("Edit as object") && structure.options.object) await renderConfigObjectStructureSelector(checker,async () => {await renderConfigTypeSwitchStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)},structure.options.object,data,parent,parentIndex,path)
else if (answer.selectedText.startsWith("Edit as array/list") && structure.options.array) await renderConfigArrayStructureSelector(checker,async () => {await renderConfigTypeSwitchStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)},structure.options.array,data,parent,parentIndex,path)
else if (answer.selectedText.startsWith("Edit as null") && structure.options.null) await renderConfigNullStructureEditor(checker,async () => {await renderConfigTypeSwitchStructureEditor(checker,backFn,structure,data,parent,parentIndex,path)},structure.options.null,null,parent,parentIndex,path)
}
function getArrayPreviewStructureNameLength(structure:api.ODCheckerStructure,data:api.ODValidJsonType,parent:object,parentIndex:string|number): number {
if (structure instanceof api.ODCheckerBooleanStructure && typeof data == "boolean") return data.toString().length
else if (structure instanceof api.ODCheckerNumberStructure && typeof data == "number") return data.toString().length
else if (structure instanceof api.ODCheckerStringStructure && typeof data == "string") return data.length
else if (structure instanceof api.ODCheckerNullStructure && data === null) return "Null".length
else if (structure instanceof api.ODCheckerArrayStructure && Array.isArray(data)) return "Array".length
else if (structure instanceof api.ODCheckerObjectStructure && typeof data == "object" && !Array.isArray(data) && data){
if (!structure.options.cliDisplayKeyInParentArray) return "Object".length
else return data[structure.options.cliDisplayKeyInParentArray].toString().length
}else if (structure instanceof api.ODCheckerEnabledObjectStructure && typeof data == "object" && !Array.isArray(data) && data){
const subStructure = structure.options.checker
if (!subStructure) return "<unknown-property>".length
return getArrayPreviewStructureNameLength(subStructure,data,parent,parentIndex)
}else if (structure instanceof api.ODCheckerObjectSwitchStructure && typeof data == "object" && !Array.isArray(data) && data){
for (const objectTemplate of (structure.options.objects ?? [])){
if (objectTemplate.properties.every((prop) => data[prop.key] === prop.value)){
//object template matches data
const subStructure = objectTemplate.checker
return getArrayPreviewStructureNameLength(subStructure,data,parent,parentIndex)
}
}
return "<unknown-property>".length
}else if (structure instanceof api.ODCheckerTypeSwitchStructure){
if (typeof data == "boolean" && structure.options.boolean) return getArrayPreviewStructureNameLength(structure.options.boolean,data,parent,parentIndex)
else if (typeof data == "number" && structure.options.number) return getArrayPreviewStructureNameLength(structure.options.number,data,parent,parentIndex)
else if (typeof data == "string" && structure.options.string) return getArrayPreviewStructureNameLength(structure.options.string,data,parent,parentIndex)
else if (typeof data == "object" && !Array.isArray(data) && data && structure.options.object) return getArrayPreviewStructureNameLength(structure.options.object,data,parent,parentIndex)
else if (Array.isArray(data) && structure.options.array) return getArrayPreviewStructureNameLength(structure.options.array,data,parent,parentIndex)
else if (data === null && structure.options.null) return getArrayPreviewStructureNameLength(structure.options.null,data,parent,parentIndex)
else return "<unknown-property>".length
}else return "<unknown-property>".length
}
function getArrayPreviewFromStructure(structure:api.ODCheckerStructure,data:api.ODValidJsonType,parent:object,parentIndex:string|number,nameLength:number): string {
if (structure instanceof api.ODCheckerBooleanStructure && typeof data == "boolean") return data.toString()
else if (structure instanceof api.ODCheckerNumberStructure && typeof data == "number") return data.toString()
else if (structure instanceof api.ODCheckerStringStructure && typeof data == "string") return data
else if (structure instanceof api.ODCheckerNullStructure && data === null) return "Null"
else if (structure instanceof api.ODCheckerArrayStructure && Array.isArray(data)) return "Array"
else if (structure instanceof api.ODCheckerObjectStructure && typeof data == "object" && !Array.isArray(data) && data){
const additionalKeys = (structure.options.cliDisplayAdditionalKeysInParentArray ?? []).map((key) => key+": "+data[key].toString()).join(", ")
if (!structure.options.cliDisplayKeyInParentArray) return "Object"
else return data[structure.options.cliDisplayKeyInParentArray].toString().padEnd(nameLength+5," ")+ansis.gray(additionalKeys.length > 0 ? "("+additionalKeys+")" : "")
}else if (structure instanceof api.ODCheckerEnabledObjectStructure && typeof data == "object" && !Array.isArray(data) && data){
const subStructure = structure.options.checker
if (!subStructure) return "<unknown-property>"
return getArrayPreviewFromStructure(subStructure,data,parent,parentIndex,nameLength)
}else if (structure instanceof api.ODCheckerObjectSwitchStructure && typeof data == "object" && !Array.isArray(data) && data){
for (const objectTemplate of (structure.options.objects ?? [])){
if (objectTemplate.properties.every((prop) => data[prop.key] === prop.value)){
//object template matches data
const subStructure = objectTemplate.checker
return getArrayPreviewFromStructure(subStructure,data,parent,parentIndex,nameLength)
}
}
return "<unknown-property>"
}else if (structure instanceof api.ODCheckerTypeSwitchStructure){
if (typeof data == "boolean" && structure.options.boolean) return getArrayPreviewFromStructure(structure.options.boolean,data,parent,parentIndex,nameLength)
else if (typeof data == "number" && structure.options.number) return getArrayPreviewFromStructure(structure.options.number,data,parent,parentIndex,nameLength)
else if (typeof data == "string" && structure.options.string) return getArrayPreviewFromStructure(structure.options.string,data,parent,parentIndex,nameLength)
else if (typeof data == "object" && !Array.isArray(data) && data && structure.options.object) return getArrayPreviewFromStructure(structure.options.object,data,parent,parentIndex,nameLength)
else if (Array.isArray(data) && structure.options.array) return getArrayPreviewFromStructure(structure.options.array,data,parent,parentIndex,nameLength)
else if (data === null && structure.options.null) return getArrayPreviewFromStructure(structure.options.null,data,parent,parentIndex,nameLength)
else return "<unknown-property>"
}else return "<unknown-property>"
}
async function chooseAdditionConfigStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[]){
if (structure instanceof api.ODCheckerObjectStructure) await renderAdditionConfigObjectStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
else if (structure instanceof api.ODCheckerBooleanStructure) await renderAdditionConfigBooleanStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
else if (structure instanceof api.ODCheckerNumberStructure) await renderAdditionConfigNumberStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
else if (structure instanceof api.ODCheckerStringStructure) await renderAdditionConfigStringStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
else if (structure instanceof api.ODCheckerNullStructure) await renderAdditionConfigNullStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
else if (structure instanceof api.ODCheckerEnabledObjectStructure) await renderAdditionConfigEnabledObjectStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
else if (structure instanceof api.ODCheckerObjectSwitchStructure) await renderAdditionConfigObjectSwitchStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
else if (structure instanceof api.ODCheckerArrayStructure) await renderAdditionConfigArrayStructureSelector(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
else if (structure instanceof api.ODCheckerTypeSwitchStructure) await renderAdditionConfigTypeSwitchStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
else await backFn()
}
async function renderAdditionConfigObjectStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerObjectStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[],localData:object={}){
const children = structure.options.children ?? []
const skipKeys = (structure.options.cliInitSkipKeys ?? [])
//add skipped properties
for (const key of skipKeys){
const childStructure = children.find((c) => c.key == key)
if (childStructure){
const defaultValue = childStructure.checker.options.cliInitDefaultValue
if (childStructure.checker instanceof api.ODCheckerBooleanStructure) localData[key] = (typeof defaultValue == "boolean" ? defaultValue : false)
else if (childStructure.checker instanceof api.ODCheckerNumberStructure) localData[key] = (typeof defaultValue == "number" ? defaultValue : 0)
else if (childStructure.checker instanceof api.ODCheckerStringStructure) localData[key] = (typeof defaultValue == "string" ? defaultValue : "")
else if (childStructure.checker instanceof api.ODCheckerNullStructure) localData[key] = (defaultValue === null ? defaultValue : null)
else if (childStructure.checker instanceof api.ODCheckerArrayStructure) localData[key] = (Array.isArray(defaultValue) ? JSON.parse(JSON.stringify(defaultValue)) : [])
else if (childStructure.checker instanceof api.ODCheckerObjectStructure) localData[key] = ((typeof defaultValue == "object" && !Array.isArray(defaultValue) && defaultValue) ? JSON.parse(JSON.stringify(defaultValue)) : {})
else if (childStructure.checker instanceof api.ODCheckerObjectSwitchStructure) localData[key] = ((typeof defaultValue == "object" && !Array.isArray(defaultValue) && defaultValue) ? JSON.parse(JSON.stringify(defaultValue)) : {})
else if (childStructure.checker instanceof api.ODCheckerEnabledObjectStructure) localData[key] = ((typeof defaultValue == "object" && !Array.isArray(defaultValue) && defaultValue) ? JSON.parse(JSON.stringify(defaultValue)) : {})
else if (childStructure.checker instanceof api.ODCheckerTypeSwitchStructure && typeof defaultValue != "undefined") localData[key] = JSON.parse(JSON.stringify(defaultValue))
else throw new api.ODSystemError("OT CLI => Object skip key has an invalid checker structure! key: "+key)
}
}
//add properties that need to be configured
const configChildren = children.filter((c) => !skipKeys.includes(c.key)).map((c) => {return {key:c.key,checker:c.checker}})
await configureAdditionObjectProperties(checker,configChildren,0,localData,[...path,parentIndex],(typeof parentIndex == "number") ? [...localPath] : [...localPath,parentIndex],async () => {
//go back to previous screen
await backFn()
},async () => {
//finish setup
terminal.bold.blue("\n\n✅ Variable saved succesfully!")
await utilities.timer(400)
await nextFn(localData)
})
}
async function configureAdditionObjectProperties(checker:api.ODChecker,children:{key:string,checker:api.ODCheckerStructure}[],currentIndex:number,localData:object,path:(string|number)[],localPath:(string|number)[],backFn:(() => api.ODPromiseVoid),nextFn:(() => api.ODPromiseVoid)){
if (children.length < 1) return await nextFn()
const child = children[currentIndex]
await chooseAdditionConfigStructure(checker,async () => {
if (children[currentIndex-1]) await configureAdditionObjectProperties(checker,children,currentIndex-1,localData,path,localPath,backFn,nextFn)
else await backFn()
},async (data) => {
localData[child.key] = data
if (children[currentIndex+1]) await configureAdditionObjectProperties(checker,children,currentIndex+1,localData,path,localPath,backFn,nextFn)
else await nextFn()
},child.checker,localData,child.key,path,localPath)
}
async function renderAdditionConfigEnabledObjectStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerEnabledObjectStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[]){
const enabledProperty = structure.options.property
const enabledValue = structure.options.enabledValue
const subStructure = structure.options.checker
if (!enabledProperty || !subStructure || !subStructure.options.children) return await backFn()
let propertyStructure: api.ODCheckerBooleanStructure|api.ODCheckerNumberStructure|api.ODCheckerStringStructure
if (typeof enabledValue == "string") propertyStructure = new api.ODCheckerStringStructure("opendiscord:CLI-checker-enabled-object-structure",{})
else if (typeof enabledValue == "number") propertyStructure = new api.ODCheckerNumberStructure("opendiscord:CLI-checker-enabled-object-structure",{})
else if (typeof enabledValue == "boolean") propertyStructure = new api.ODCheckerBooleanStructure("opendiscord:CLI-checker-enabled-object-structure",{})
else throw new Error("OT CLI => enabled object structure has an invalid type of enabledProperty. It must be a primitive boolean/number/string.")
const localData = {}
await chooseAdditionConfigStructure(checker,backFn,async (data) => {
if (data === enabledValue) await renderAdditionConfigObjectStructure(checker,async () => {await renderAdditionConfigEnabledObjectStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)},nextFn,subStructure,parent,parentIndex,path,localPath,localData)
else{
localData[enabledProperty] = data
//copy old object checker to new object checker => all options get de-referenced (this is needed for the new object skip keys are temporary)
const newStructure = new api.ODCheckerObjectStructure(subStructure.id,{children:[]})
//copy all options over to the new checker
newStructure.options.children = [...subStructure.options.children]
newStructure.options.cliInitSkipKeys = subStructure.options.children.map((child) => child.key)
for (const key of Object.keys(subStructure.options)){
if (key != "children" && key != "cliInitSkipKeys") newStructure.options[key] = subStructure.options[key]
}
//adds all properties to object as "skipKeys", then continues to next function
await renderAdditionConfigObjectStructure(checker,async () => {await renderAdditionConfigEnabledObjectStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)},nextFn,newStructure,parent,parentIndex,path,localPath,localData)
await nextFn(localData)
}
},propertyStructure,localData,enabledProperty,[...path,parentIndex],[...localPath,parentIndex])
}
async function renderAdditionConfigObjectSwitchStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerObjectSwitchStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[]){
renderHeader([...path,parentIndex])
terminal(ansis.bold.green("What type of object would you like to add?\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
const answer = await terminal.singleColumnMenu(structure.options.objects.map((obj) => obj.name),{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
const objectTemplate = structure.options.objects[answer.selectedIndex]
//copy old object checker to new object checker => all options get de-referenced (this is needed for the new object switch properties which are temporary)
const oldStructure = objectTemplate.checker
const newStructure = new api.ODCheckerObjectStructure(oldStructure.id,{children:[]})
//copy all options over to the new checker
newStructure.options.children = [...oldStructure.options.children]
newStructure.options.cliInitSkipKeys = [...(oldStructure.options.cliInitSkipKeys ?? [])]
for (const key of Object.keys(oldStructure.options)){
if (key != "children" && key != "cliInitSkipKeys") newStructure.options[key] = oldStructure.options[key]
}
//add the keys of the object switch properties to the 'cliInitSkipKeys' because they need to be skipped.
objectTemplate.properties.map((p) => p.key).forEach((p) => {
if (!newStructure.options.cliInitSkipKeys) newStructure.options.cliInitSkipKeys = [p]
else if (!newStructure.options.cliInitSkipKeys.includes(p)) newStructure.options.cliInitSkipKeys.push(p)
})
//add structure checkers for all properties
for (const prop of objectTemplate.properties){
if (!newStructure.options.children.find((child) => child.key === prop.key)){
if (typeof prop.value == "string") newStructure.options.children.unshift({key:prop.key,optional:false,priority:1,checker:new api.ODCheckerStringStructure("opendiscord:CLI-checker-object-switch-structure",{cliInitDefaultValue:prop.value})})
else if (typeof prop.value == "number") newStructure.options.children.unshift({key:prop.key,optional:false,priority:1,checker:new api.ODCheckerNumberStructure("opendiscord:CLI-checker-object-switch-structure",{cliInitDefaultValue:prop.value})})
else if (typeof prop.value == "boolean") newStructure.options.children.unshift({key:prop.key,optional:false,priority:1,checker:new api.ODCheckerBooleanStructure("opendiscord:CLI-checker-object-switch-structure",{cliInitDefaultValue:prop.value})})
}
}
await chooseAdditionConfigStructure(checker,backFn,nextFn,newStructure,parent,parentIndex,path,localPath)
}
async function renderAdditionConfigBooleanStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerBooleanStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[]){
renderHeader([...path,parentIndex])
terminal(ansis.bold.green("You are now creating "+(typeof parentIndex == "string" ? "the boolean property "+ansis.blue("\""+parentIndex+"\"") : "boolean property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
terminal.gray("\nProperty: "+ansis.bold.blue(structure.options.cliDisplayName ?? [...localPath,parentIndex].join("."))+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const answer = await terminal.singleColumnMenu(["false (Disabled)","true (Enabled)"],{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
//run config checker
const newValue = (answer.selectedIndex == 0) ? false : true
const newPath = [...path]
newPath.shift()
checker.messages = [] //manually clear previous messages
const isDataValid = structure.check(checker,newValue,newPath)
if (isDataValid){
terminal.bold.blue("\n\n✅ Variable saved succesfully!")
await utilities.timer(400)
await nextFn(newValue)
}else{
const messages = checker.messages.map((msg) => "=> ["+msg.type.toUpperCase()+"] "+msg.message).join("\n")
terminal.bold.blue("\n\n❌ Variable is invalid! Please try again!")
terminal.gray("\n"+messages)
await utilities.timer(1000+(2000*checker.messages.length))
await renderAdditionConfigBooleanStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
}
}
async function renderAdditionConfigNumberStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerNumberStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[],prefillValue?:string){
renderHeader([...path,parentIndex])
terminal(ansis.bold.green("You are now creating "+(typeof parentIndex == "string" ? "the number property "+ansis.blue("\""+parentIndex+"\"") : "number property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(insert a new value and press enter, go back using escape)\n"))
terminal.gray("\nProperty: "+ansis.bold.blue(structure.options.cliDisplayName ?? [...localPath,parentIndex].join("."))+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const answer = await terminal.inputField({
default:prefillValue,
style:terminal.cyan,
cancelable:true
}).promise
if (typeof answer != "string") return await backFn()
//run config checker
const newValue = Number(answer.replaceAll(",","."))
const newPath = [...path]
newPath.shift()
checker.messages = [] //manually clear previous messages
const isDataValid = structure.check(checker,newValue,newPath)
if (isDataValid){
terminal.bold.blue("\n\n✅ Variable saved succesfully!")
await utilities.timer(400)
await nextFn(newValue)
}else{
const messages = checker.messages.map((msg) => "=> ["+msg.type.toUpperCase()+"] "+msg.message).join("\n")
terminal.bold.blue("\n\n❌ Variable is invalid! Please try again!")
terminal.red("\n"+messages)
await utilities.timer(1000+(2000*checker.messages.length))
await renderAdditionConfigNumberStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath,answer)
}
}
async function renderAdditionConfigStringStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerStringStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[],prefillValue?:string){
renderHeader([...path,parentIndex])
terminal(ansis.bold.green("You are now creating "+(typeof parentIndex == "string" ? "the string property "+ansis.blue("\""+parentIndex+"\"") : "string property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(insert a new value and press enter, go back using escape)\n"))
terminal.gray("\nProperty: "+ansis.bold.blue(structure.options.cliDisplayName ?? [...localPath,parentIndex].join("."))+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const customExtraOptions = (structure instanceof api.ODCheckerCustomStructure_DiscordId) ? structure.extraOptions : undefined
const customAutocompleteFunc = structure.options.cliAutocompleteFunc ? await structure.options.cliAutocompleteFunc() : null
const autocompleteList = ((customAutocompleteFunc ?? structure.options.cliAutocompleteList) ?? customExtraOptions) ?? structure.options.choices
const autoCompleteMenuOpts: Terminal.SingleLineMenuOptions = {
style:terminal.white,
selectedStyle:terminal.bgBlue.white
}
const input = terminal.inputField({
default:prefillValue,
style:terminal.cyan,
hintStyle:terminal.gray,
cancelable:false,
autoComplete:autocompleteList,
autoCompleteHint:(!!autocompleteList),
autoCompleteMenu:(autocompleteList) ? autoCompleteMenuOpts as Terminal.Autocompletion : false
})
terminal.on("key",async (name:string,matches:string[],data:object) => {
if (name == "ESCAPE"){
terminal.removeListener("key","cli-render-string-structure-add")
input.abort()
await backFn()
}
},({id:"cli-render-string-structure-add"} as any))
const answer = await input.promise
terminal.removeListener("key","cli-render-string-structure-add")
if (typeof answer != "string") return
//run config checker
const newValue = answer.replaceAll("\\n","\n")
const newPath = [...path]
newPath.shift()
checker.messages = [] //manually clear previous messages
const isDataValid = structure.check(checker,newValue,newPath)
if (isDataValid){
terminal.bold.blue("\n\n✅ Variable saved succesfully!")
await utilities.timer(400)
await nextFn(newValue)
}else{
const messages = checker.messages.map((msg) => "=> ["+msg.type.toUpperCase()+"] "+msg.message).join("\n")
terminal.bold.blue("\n\n❌ Variable is invalid! Please try again!")
terminal.red("\n"+messages)
await utilities.timer(1000+(2000*checker.messages.length))
await renderAdditionConfigStringStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath,answer)
}
}
async function renderAdditionConfigNullStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerNullStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[]){
renderHeader([...path,parentIndex])
terminal(ansis.bold.green("You are now creating "+(typeof parentIndex == "string" ? "the null property "+ansis.blue("\""+parentIndex+"\"") : "null property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
terminal.gray("\nProperty: "+ansis.bold.blue(structure.options.cliDisplayName ?? [...localPath,parentIndex].join("."))+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const answer = await terminal.singleColumnMenu(["null"],{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
//run config checker
const newValue = null
const newPath = [...path]
newPath.shift()
checker.messages = [] //manually clear previous messages
const isDataValid = structure.check(checker,newValue,newPath)
if (isDataValid){
terminal.bold.blue("\n\n✅ Variable saved succesfully!")
await utilities.timer(400)
await nextFn(newValue)
}else{
const messages = checker.messages.map((msg) => "=> ["+msg.type.toUpperCase()+"] "+msg.message).join("\n")
terminal.bold.blue("\n\n❌ Variable is invalid! Please try again!")
terminal.red("\n"+messages)
await utilities.timer(1000+(2000*checker.messages.length))
await renderAdditionConfigNullStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)
}
}
async function renderAdditionConfigArrayStructureSelector(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerArrayStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[],localData:any[]=[]){
renderHeader([...path,parentIndex])
terminal(ansis.bold.green("Please select what you would like to do with the new array.\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
if (!structure.options.propertyChecker) return await backFn()
terminal.gray("\nProperty: "+ansis.bold.blue(structure.options.cliDisplayName ?? [...localPath,parentIndex].join("."))+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const propertyName = structure.options.cliDisplayPropertyName ?? "index"
const answer = await terminal.singleColumnMenu(localData.length < 1 ? [ansis.magenta("-> Continue to next variable"),"Add "+propertyName] : [
ansis.magenta("-> Continue to next variable"),
"Add "+propertyName,
"Edit "+propertyName,
"Move "+propertyName,
"Remove "+propertyName,
"Duplicate "+propertyName,
],{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
const backFnFunc = async () => {await renderAdditionConfigArrayStructureSelector(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath,localData)}
if (answer.canceled) return await backFn()
if (answer.selectedIndex == 0) await nextFn(localData)
else if (answer.selectedIndex == 1) await chooseAdditionConfigStructure(checker,backFnFunc,async (newData) => {
localData[localData.length] = newData
await backFnFunc()
},structure.options.propertyChecker,localData,localData.length,path,[])
else if (answer.selectedIndex == 2) await renderConfigArrayStructureEditSelector(checker,backFnFunc,structure,structure.options.propertyChecker,localData,parent,parentIndex,path)
else if (answer.selectedIndex == 3) await renderconfigArrayStructureMoveSelector(checker,backFnFunc,structure,structure.options.propertyChecker,localData,parent,parentIndex,path)
else if (answer.selectedIndex == 4) await renderconfigArrayStructureRemoveSelector(checker,backFnFunc,structure,structure.options.propertyChecker,localData,parent,parentIndex,path)
else if (answer.selectedIndex == 5) await renderConfigArrayStructureDuplicateSelector(checker,backFnFunc,structure,structure.options.propertyChecker,localData,parent,parentIndex,path)
}
async function renderAdditionConfigTypeSwitchStructure(checker:api.ODChecker,backFn:(() => api.ODPromiseVoid),nextFn:((data:any) => api.ODPromiseVoid),structure:api.ODCheckerTypeSwitchStructure,parent:object|any[],parentIndex:string|number,path:(string|number)[],localPath:(string|number)[]){
renderHeader(path)
terminal(ansis.bold.green("You are now creating "+(typeof parentIndex == "string" ? "the property "+ansis.blue("\""+parentIndex+"\"") : "property "+ansis.blue("#"+(parentIndex+1)))+".\n")+ansis.italic.gray("(use arrow keys to navigate, go back using escape)\n"))
terminal.gray("\nProperty: "+ansis.bold.blue(structure.options.cliDisplayName ?? [...localPath,parentIndex].join("."))+"\n")
terminal.gray("Description: "+ansis.bold(structure.options.cliDisplayDescription ?? "/")+"\n")
const actionsList: string[] = []
if (structure.options.boolean) actionsList.push("Create as boolean")
if (structure.options.string) actionsList.push("Create as string")
if (structure.options.number) actionsList.push("Create as number")
if (structure.options.object) actionsList.push("Create as object")
if (structure.options.array) actionsList.push("Create as array/list")
if (structure.options.null) actionsList.push("Create as null")
const answer = await terminal.singleColumnMenu(actionsList,{
leftPadding:"> ",
style:terminal.cyan,
selectedStyle:terminal.bgDefaultColor.bold,
submittedStyle:terminal.bgBlue,
extraLines:2,
cancelable:true
}).promise
if (answer.canceled) return await backFn()
//run selected structure editor (untested)
if (answer.selectedText.startsWith("Create as boolean") && structure.options.boolean) await renderAdditionConfigBooleanStructure(checker,async () => {await renderAdditionConfigTypeSwitchStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)},nextFn,structure.options.boolean,parent,parentIndex,path,localPath)
else if (answer.selectedText.startsWith("Create as string") && structure.options.string) await renderAdditionConfigStringStructure(checker,async () => {await renderAdditionConfigTypeSwitchStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)},nextFn,structure.options.string,parent,parentIndex,path,localPath)
else if (answer.selectedText.startsWith("Create as number") && structure.options.number) await renderAdditionConfigNumberStructure(checker,async () => {await renderAdditionConfigTypeSwitchStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)},nextFn,structure.options.number,parent,parentIndex,path,localPath)
else if (answer.selectedText.startsWith("Create as object") && structure.options.object) await renderAdditionConfigObjectStructure(checker,async () => {await renderAdditionConfigTypeSwitchStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)},nextFn,structure.options.object,parent,parentIndex,path,localPath)
else if (answer.selectedText.startsWith("Create as array/list") && structure.options.array) await renderAdditionConfigArrayStructureSelector(checker,async () => {await renderAdditionConfigTypeSwitchStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)},nextFn,structure.options.array,parent,parentIndex,path,localPath)
else if (answer.selectedText.startsWith("Create as null") && structure.options.null) await renderAdditionConfigNullStructure(checker,async () => {await renderAdditionConfigTypeSwitchStructure(checker,backFn,nextFn,structure,parent,parentIndex,path,localPath)},nextFn,structure.options.null,parent,parentIndex,path,localPath)
}
+49 -56
View File
@@ -1,16 +1,9 @@
import {opendiscord, api, utilities} from "../../index" import {opendiscord, api, utilities} from "../../index"
import * as cli from "@open-discord-bots/framework/cli"
import {Terminal, terminal} from "terminal-kit" import {Terminal, terminal} from "terminal-kit"
import ansis from "ansis" import ansis from "ansis"
import * as discord from "discord.js" import * as discord from "discord.js"
import crypto from "crypto" import { headerOpts } from "./cli"
import {renderHeader, terminate} from "./cli"
function generateUniqueIdFromName(name:string){
//id only allows a-z, 0-9 & dash characters (& replace spaces with dashes)
const filteredChars = name.toLowerCase().replaceAll(" ","-").split("").filter((ch) => /^[a-zA-Z0-9-]{1}$/.test(ch))
const randomSuffix = "-"+crypto.randomBytes(4).toString("hex")
return filteredChars.join("")+randomSuffix
}
interface ODQuickSetupVariables { interface ODQuickSetupVariables {
client?:api.ODClientManager, client?:api.ODClientManager,
@@ -20,7 +13,7 @@ interface ODQuickSetupVariables {
language?:string, language?:string,
slashCommands?:boolean, slashCommands?:boolean,
textCommands?:boolean, textCommands?:boolean,
status?:api.ODJsonConfig_DefaultStatusType, status?:api.ODGeneralJsonConfig_Status,
logChannel?:string|null, logChannel?:string|null,
ticketCategory?:string|null, ticketCategory?:string|null,
ticketOptions:({ ticketOptions:({
@@ -30,7 +23,7 @@ interface ODQuickSetupVariables {
buttonColor:api.ODValidButtonColor, buttonColor:api.ODValidButtonColor,
buttonEmoji:string|null, buttonEmoji:string|null,
channelPrefix:string, channelPrefix:string,
channelSuffix:api.ODJsonConfig_DefaultOptionTicketChannelType["suffix"] channelSuffix:api.ODOptionsJsonConfig_TicketOptionChannelSettings["suffix"]
}|null)[], }|null)[],
optionIdStorage:string[], optionIdStorage:string[],
autocloseHours?:number|null, autocloseHours?:number|null,
@@ -38,7 +31,7 @@ interface ODQuickSetupVariables {
globalUserLimit?:number|null, globalUserLimit?:number|null,
removeParticipantsOnClose?:boolean, removeParticipantsOnClose?:boolean,
ticketMessageLayout?:"embed"|"text"|null, ticketMessageLayout?:"embed"|"text"|null,
emojiStyle?:api.ODJsonConfig_DefaultSystem["emojiStyle"], emojiStyle?:api.ODGeneralJsonConfig_System["emojiStyle"],
panelName?:string, panelName?:string,
panelDescription?:string, panelDescription?:string,
panelDropdown?:boolean, panelDropdown?:boolean,
@@ -113,7 +106,7 @@ function quickSetupRequiresReset(): boolean {
} }
async function renderQuickSetupWarning(backFn:() => api.ODPromiseVoid) { async function renderQuickSetupWarning(backFn:() => api.ODPromiseVoid) {
renderHeader("⏱️ Open Ticket Quick Setup: Warning") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Warning")
terminal.bold(ansis.yellow("WARNING! ")+ansis.red("By using the 'Quick Setup' feature, your current config will be completely resetted!")) terminal.bold(ansis.yellow("WARNING! ")+ansis.red("By using the 'Quick Setup' feature, your current config will be completely resetted!"))
terminal.gray("\nAre you sure you want to continue?\n") terminal.gray("\nAre you sure you want to continue?\n")
@@ -135,7 +128,7 @@ async function renderQuickSetupWarning(backFn:() => api.ODPromiseVoid) {
} }
async function renderQuickSetupWelcome(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupWelcome(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Introduction") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Introduction")
terminal.bold.underline.blue("Open Ticket: Quick Setup\n") terminal.bold.underline.blue("Open Ticket: Quick Setup\n")
terminal.gray([ terminal.gray([
@@ -165,7 +158,7 @@ async function renderQuickSetupWelcome(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupDevPortal(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupDevPortal(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Discord Bot & Developer Portal") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Discord Bot & Developer Portal")
terminal.bold.blue(stepCount(1)+"Have you already created a Discord bot you can use for Open Ticket?\n") terminal.bold.blue(stepCount(1)+"Have you already created a Discord bot you can use for Open Ticket?\n")
@@ -189,7 +182,7 @@ async function renderQuickSetupDevPortal(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupDevPortalGuide(variation:0|1,backFn:() => api.ODPromiseVoid){ async function renderQuickSetupDevPortalGuide(variation:0|1,backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Discord Bot & Developer Portal") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Discord Bot & Developer Portal")
if (variation == 0){ if (variation == 0){
terminal.bold.blue(stepCount(1.1)+"You've mentioned that you don't know how to create a Discord bot.\n\n") terminal.bold.blue(stepCount(1.1)+"You've mentioned that you don't know how to create a Discord bot.\n\n")
@@ -238,7 +231,7 @@ async function quickSetupLogin(token:string): Promise<api.ODClientManager|null>
} }
async function renderQuickSetupBotToken(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupBotToken(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Bot Token") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Bot Token")
terminal.bold.blue(stepCount(2)+"Please insert the token of your discord bot.\n") terminal.bold.blue(stepCount(2)+"Please insert the token of your discord bot.\n")
terminal.gray("This is used to configure the bot and is then stored securely in the './config/general.json' file.\n\n> ") terminal.gray("This is used to configure the bot and is then stored securely in the './config/general.json' file.\n\n> ")
@@ -275,7 +268,7 @@ async function renderQuickSetupServer(backFn:() => api.ODPromiseVoid){
const {client} = quickSetupStorage const {client} = quickSetupStorage
if (!client) return if (!client) return
renderHeader("⏱️ Open Ticket Quick Setup: Discord Server") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Discord Server")
terminal.bold.blue(stepCount(3)+"Please select a Discord Server to use.\n") terminal.bold.blue(stepCount(3)+"Please select a Discord Server to use.\n")
terminal.gray("The bot will only work in this server.\n\n") terminal.gray("The bot will only work in this server.\n\n")
@@ -305,7 +298,7 @@ async function renderQuickSetupAdminRoles(selectedAdmins:string[],backFn:() => a
const {client,guild} = quickSetupStorage const {client,guild} = quickSetupStorage
if (!client || !guild) return if (!client || !guild) return
renderHeader("⏱️ Open Ticket Quick Setup: Admin Roles") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Admin Roles")
terminal.bold.blue(stepCount(4)+"Please select all 'Global Admins' roles to use.\n") terminal.bold.blue(stepCount(4)+"Please select all 'Global Admins' roles to use.\n")
terminal.gray("Users with one of these roles will be able to access & interact with all tickets.\n\n") terminal.gray("Users with one of these roles will be able to access & interact with all tickets.\n\n")
@@ -341,7 +334,7 @@ async function renderQuickSetupColorPicker(backFn:() => api.ODPromiseVoid){
const {client,guild,globalAdmins} = quickSetupStorage const {client,guild,globalAdmins} = quickSetupStorage
if (!client || !guild || !globalAdmins) return if (!client || !guild || !globalAdmins) return
renderHeader("⏱️ Open Ticket Quick Setup: Main Color") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Main Color")
terminal.bold.blue(stepCount(5)+"Please insert a valid hex-color to use in all embeds.\n") terminal.bold.blue(stepCount(5)+"Please insert a valid hex-color to use in all embeds.\n")
terminal.gray("You can also choose from existing presets. (e.g. red, green, blue, ...)\n\n> ") terminal.gray("You can also choose from existing presets. (e.g. red, green, blue, ...)\n\n> ")
@@ -375,7 +368,7 @@ async function renderQuickSetupColorPicker(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupLanguage(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupLanguage(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Language") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Language")
terminal.bold.blue(stepCount(6)+"What language would you like to use in the bot?\n") terminal.bold.blue(stepCount(6)+"What language would you like to use in the bot?\n")
terminal.gray("View a list of available languages here: https://otgithub.dj-dj.be#-translators\n\n> ") terminal.gray("View a list of available languages here: https://otgithub.dj-dj.be#-translators\n\n> ")
@@ -403,7 +396,7 @@ async function renderQuickSetupLanguage(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupCommandTypes(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCommandTypes(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Command Types") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Command Types")
terminal.bold.blue(stepCount(7)+"Would you like to use slash commands, text commands or both?\n") terminal.bold.blue(stepCount(7)+"Would you like to use slash commands, text commands or both?\n")
terminal.gray("Slash commands are recommended.\n\n") terminal.gray("Slash commands are recommended.\n\n")
@@ -436,7 +429,7 @@ async function renderQuickSetupCommandTypes(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupStatusType(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupStatusType(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Status Type") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Status Type")
terminal.bold.blue(stepCount(8)+"Please select the type of status you want to use.\n") terminal.bold.blue(stepCount(8)+"Please select the type of status you want to use.\n")
terminal.gray("The status will be shown below the bot name in the userlist.\n\n") terminal.gray("The status will be shown below the bot name in the userlist.\n\n")
@@ -471,7 +464,7 @@ async function renderQuickSetupStatusText(backFn:() => api.ODPromiseVoid){
const {status} = quickSetupStorage const {status} = quickSetupStorage
if (!status) return if (!status) return
renderHeader("⏱️ Open Ticket Quick Setup: Status Text") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Status Text")
terminal.bold.blue(stepCount(8.1)+"What text would you like to display in the status?\n") terminal.bold.blue(stepCount(8.1)+"What text would you like to display in the status?\n")
terminal.gray("This will be appended after the type you have chosen in the previous question.\n\n> ") terminal.gray("This will be appended after the type you have chosen in the previous question.\n\n> ")
@@ -494,7 +487,7 @@ async function renderQuickSetupLogs(backFn:() => api.ODPromiseVoid){
const {client,guild} = quickSetupStorage const {client,guild} = quickSetupStorage
if (!client || !guild) return if (!client || !guild) return
renderHeader("⏱️ Open Ticket Quick Setup: Channel Logs") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Channel Logs")
terminal.bold.blue(stepCount(9)+"Please select the 'Text Channel' to use for logs.\n") terminal.bold.blue(stepCount(9)+"Please select the 'Text Channel' to use for logs.\n")
terminal.gray("All logs of the bot will be sent here. Make sure only admins can access this channel.\n\n") terminal.gray("All logs of the bot will be sent here. Make sure only admins can access this channel.\n\n")
@@ -531,7 +524,7 @@ async function renderQuickSetupTicketCategory(backFn:() => api.ODPromiseVoid){
const {client,guild} = quickSetupStorage const {client,guild} = quickSetupStorage
if (!client || !guild) return if (!client || !guild) return
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Category") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Category")
terminal.bold.blue(stepCount(10)+"Please select which 'Category' you would like tickets to be created in.\n") terminal.bold.blue(stepCount(10)+"Please select which 'Category' you would like tickets to be created in.\n")
terminal.gray("When no category is selected, tickets will appear at the top of the channel list.\n\n") terminal.gray("When no category is selected, tickets will appear at the top of the channel list.\n\n")
@@ -564,7 +557,7 @@ async function renderQuickSetupTicketCategory(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupTicketCount(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupTicketCount(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Configuration") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Configuration")
terminal.bold.blue(stepCount(11)+"How many ticket options/types would you like to create?\n") terminal.bold.blue(stepCount(11)+"How many ticket options/types would you like to create?\n")
terminal.gray("You can always add more ticket options/types in the config afterwards.\n\n") terminal.gray("You can always add more ticket options/types in the config afterwards.\n\n")
@@ -601,7 +594,7 @@ async function renderQuickSetupTicketCount(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupCreateTicketName(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCreateTicketName(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")")
terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please insert the name of this ticket option.\n") terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please insert the name of this ticket option.\n")
terminal.gray("Recommendation: Clean, short, obvious name, not more than ±30 characters.\n\n> ") terminal.gray("Recommendation: Clean, short, obvious name, not more than ±30 characters.\n\n> ")
@@ -635,7 +628,7 @@ async function renderQuickSetupCreateTicketName(ticketIndex:number,requiredTicke
} }
async function renderQuickSetupCreateTicketDescription(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCreateTicketDescription(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")")
terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please insert the description of this ticket option.\n") terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please insert the description of this ticket option.\n")
terminal.gray("Recommendation: Use '\\n' (backslash-n) for a newline.\n\n> ") terminal.gray("Recommendation: Use '\\n' (backslash-n) for a newline.\n\n> ")
@@ -655,7 +648,7 @@ async function renderQuickSetupCreateTicketDescription(ticketIndex:number,requir
} }
async function renderQuickSetupCreateTicketButtonType(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCreateTicketButtonType(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")")
terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) How would you like to display the ticket name in the button/dropdown?\n") terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) How would you like to display the ticket name in the button/dropdown?\n")
terminal.gray("You will be able to choose between dropdown/buttons when configuring panels.\n\n") terminal.gray("You will be able to choose between dropdown/buttons when configuring panels.\n\n")
@@ -686,7 +679,7 @@ async function renderQuickSetupCreateTicketButtonType(ticketIndex:number,require
} }
async function renderQuickSetupCreateTicketButtonEmoji(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCreateTicketButtonEmoji(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")")
terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please insert the button emoji of this ticket option.\n") terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please insert the button emoji of this ticket option.\n")
terminal.gray("Only 1 emoji allowed. Tip: Insert custom emoji's via the following syntax: <:12345678910:emoji_name>\n\n> ") terminal.gray("Only 1 emoji allowed. Tip: Insert custom emoji's via the following syntax: <:12345678910:emoji_name>\n\n> ")
@@ -714,7 +707,7 @@ async function renderQuickSetupCreateTicketButtonEmoji(ticketIndex:number,requir
} }
async function renderQuickSetupCreateTicketButtonColor(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCreateTicketButtonColor(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")")
terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) What color would you like the button to be?\n") terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) What color would you like the button to be?\n")
terminal.gray("This will not apply when choosing 'dropdown' mode in the panel configuration.\n\n") terminal.gray("This will not apply when choosing 'dropdown' mode in the panel configuration.\n\n")
@@ -742,7 +735,7 @@ async function renderQuickSetupCreateTicketButtonColor(ticketIndex:number,requir
} }
async function renderQuickSetupCreateTicketChannelPrefix(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCreateTicketChannelPrefix(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")")
terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please insert the channel prefix of this ticket option.\n") terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please insert the channel prefix of this ticket option.\n")
terminal.gray("Examples: 'ticket-', 'question-', 'test-channel-', ...\n\n> ") terminal.gray("Examples: 'ticket-', 'question-', 'test-channel-', ...\n\n> ")
@@ -766,7 +759,7 @@ async function renderQuickSetupCreateTicketChannelPrefix(ticketIndex:number,requ
} }
async function renderQuickSetupCreateTicketChannelSuffix(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCreateTicketChannelSuffix(ticketIndex:number,requiredTickets:number,backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Configuration (Ticket "+(ticketIndex+1)+"/"+requiredTickets+")")
terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please select the channel suffix mode of this ticket option.\n") terminal.bold.blue("("+utilities.ordinalNumber(ticketIndex+1)+" Ticket) Please select the channel suffix mode of this ticket option.\n")
terminal.gray("The suffix is appended after the prefix and will be generated on ticket creation.\n\n") terminal.gray("The suffix is appended after the prefix and will be generated on ticket creation.\n\n")
@@ -806,7 +799,7 @@ async function renderQuickSetupCreateTicketChannelSuffix(ticketIndex:number,requ
} }
async function renderQuickSetupAutoclose(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupAutoclose(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Autoclose") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Autoclose")
terminal.bold.blue(stepCount(12)+"Would you like to enable autoclosing tickets?\n") terminal.bold.blue(stepCount(12)+"Would you like to enable autoclosing tickets?\n")
terminal.gray("Applies to all created tickets. You can always change/disable autoclose per ticket-option in the config afterwards.\n\n") terminal.gray("Applies to all created tickets. You can always change/disable autoclose per ticket-option in the config afterwards.\n\n")
@@ -839,7 +832,7 @@ async function renderQuickSetupAutoclose(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupCooldown(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCooldown(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Cooldown") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Cooldown")
terminal.bold.blue(stepCount(13)+"Would you like to enable ticket creation cooldown?\n") terminal.bold.blue(stepCount(13)+"Would you like to enable ticket creation cooldown?\n")
terminal.gray("Applies to all created tickets. You can always change/disable cooldown per ticket-option in the config afterwards.\n\n") terminal.gray("Applies to all created tickets. You can always change/disable cooldown per ticket-option in the config afterwards.\n\n")
@@ -873,7 +866,7 @@ async function renderQuickSetupCooldown(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupLimits(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupLimits(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Limits") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Limits")
terminal.bold.blue(stepCount(14)+"Would you like to enable user ticket creation limits?\n") terminal.bold.blue(stepCount(14)+"Would you like to enable user ticket creation limits?\n")
terminal.gray("Applies to all created tickets. You can always change/disable limits globally or per ticket-option in the config afterwards.\n\n") terminal.gray("Applies to all created tickets. You can always change/disable limits globally or per ticket-option in the config afterwards.\n\n")
@@ -904,7 +897,7 @@ async function renderQuickSetupLimits(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupCloseParticipants(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupCloseParticipants(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Close Configuration") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Close Configuration")
terminal.bold.blue(stepCount(15)+"Would you like to remove all ticket participants when closing the ticket?\n") terminal.bold.blue(stepCount(15)+"Would you like to remove all ticket participants when closing the ticket?\n")
terminal.gray("When a ticket is closed, only admins can read/write in the ticket. Reopen ticket to restore read/write perms.\n\n") terminal.gray("When a ticket is closed, only admins can read/write in the ticket. Reopen ticket to restore read/write perms.\n\n")
@@ -929,7 +922,7 @@ async function renderQuickSetupCloseParticipants(backFn:() => api.ODPromiseVoid)
} }
async function renderQuickSetupTicketMessageLayout(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupTicketMessageLayout(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Message Configuration") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Message Configuration")
terminal.bold.blue(stepCount(16)+"How would you like the (initial) ticket message to be displayed?\n") terminal.bold.blue(stepCount(16)+"How would you like the (initial) ticket message to be displayed?\n")
terminal.gray("This message is sent by the bot when creating a ticket and contains buttons like closing, claiming & deleting.\n\n") terminal.gray("This message is sent by the bot when creating a ticket and contains buttons like closing, claiming & deleting.\n\n")
@@ -955,7 +948,7 @@ async function renderQuickSetupTicketMessageLayout(backFn:() => api.ODPromiseVoi
} }
async function renderQuickSetupEmojiStyle(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupEmojiStyle(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Emoji Style") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Emoji Style")
terminal.bold.blue(stepCount(17)+"How would you like emojis to be displayed in messages?\n") terminal.bold.blue(stepCount(17)+"How would you like emojis to be displayed in messages?\n")
terminal.gray("This will affect emojis in all messages of the bot, but does not apply to buttons & dropdowns.\n\n") terminal.gray("This will affect emojis in all messages of the bot, but does not apply to buttons & dropdowns.\n\n")
@@ -982,7 +975,7 @@ async function renderQuickSetupEmojiStyle(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupPanelName(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupPanelName(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Panel Name") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Panel Name")
terminal.bold.blue(stepCount(18)+"Please insert the name of the ticket panel.\n") terminal.bold.blue(stepCount(18)+"Please insert the name of the ticket panel.\n")
terminal.gray("This will be shown as the title of the panel message where all tickets are located.\n\n> ") terminal.gray("This will be shown as the title of the panel message where all tickets are located.\n\n> ")
@@ -1005,7 +998,7 @@ async function renderQuickSetupPanelName(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupPanelDescription(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupPanelDescription(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Panel Description") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Panel Description")
terminal.bold.blue(stepCount(19)+"Please insert the description of the ticket panel.\n") terminal.bold.blue(stepCount(19)+"Please insert the description of the ticket panel.\n")
terminal.gray("Shown below the title. Can be used to explain some info/rules about the ticket system.\n\n> ") terminal.gray("Shown below the title. Can be used to explain some info/rules about the ticket system.\n\n> ")
@@ -1024,7 +1017,7 @@ async function renderQuickSetupPanelDescription(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupPanelDropdown(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupPanelDropdown(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Panel Mode") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Panel Mode")
terminal.bold.blue(stepCount(20)+"Do you want to show the tickets as buttons or a dropdown?\n") terminal.bold.blue(stepCount(20)+"Do you want to show the tickets as buttons or a dropdown?\n")
terminal.gray("Dropdown doesn't support colors and cannot contain option types other than 'tickets' (e.g. website/url or reaction roles).\n\n") terminal.gray("Dropdown doesn't support colors and cannot contain option types other than 'tickets' (e.g. website/url or reaction roles).\n\n")
@@ -1049,7 +1042,7 @@ async function renderQuickSetupPanelDropdown(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupPanelLayout(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupPanelLayout(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Panel Layout") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Panel Layout")
terminal.bold.blue(stepCount(21)+"How would you like the panel message to be displayed?\n") terminal.bold.blue(stepCount(21)+"How would you like the panel message to be displayed?\n")
terminal.gray("Most of the time embeds are used. But for a simpler solution, you can choose the text layout.\n\n") terminal.gray("Most of the time embeds are used. But for a simpler solution, you can choose the text layout.\n\n")
@@ -1074,7 +1067,7 @@ async function renderQuickSetupPanelLayout(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupPanelDescribeOptions(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupPanelDescribeOptions(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Panel Option Descriptions") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Panel Option Descriptions")
terminal.bold.blue(stepCount(22)+"Would you like the panel to have auto-generated (ticket-)option descriptions?\n") terminal.bold.blue(stepCount(22)+"Would you like the panel to have auto-generated (ticket-)option descriptions?\n")
terminal.gray("It will use the 'name' & 'description' of each ticket option and displays it below the panel description.\n\n") terminal.gray("It will use the 'name' & 'description' of each ticket option and displays it below the panel description.\n\n")
@@ -1101,7 +1094,7 @@ async function renderQuickSetupPanelDescribeOptions(backFn:() => api.ODPromiseVo
} }
async function renderQuickSetupPanelMaxTicketsWarning(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupPanelMaxTicketsWarning(backFn:() => api.ODPromiseVoid){
renderHeader("⏱️ Open Ticket Quick Setup: Ticket Close Configuration") cli.renderHeader(headerOpts,"⏱️ Open Ticket Quick Setup: Ticket Close Configuration")
terminal.bold.blue(stepCount(23)+"Would you like to show the maximum amount of tickets a user can create in the panel?\n") terminal.bold.blue(stepCount(23)+"Would you like to show the maximum amount of tickets a user can create in the panel?\n")
terminal.gray("This will show the amount of tickets a user can create at the same time when limits are enabled.\n\n") terminal.gray("This will show the amount of tickets a user can create at the same time when limits are enabled.\n\n")
@@ -1126,7 +1119,7 @@ async function renderQuickSetupPanelMaxTicketsWarning(backFn:() => api.ODPromise
} }
async function renderQuickSetupReady(backFn:() => api.ODPromiseVoid){ async function renderQuickSetupReady(backFn:() => api.ODPromiseVoid){
renderHeader("😎 Open Ticket Quick Setup: Overview") cli.renderHeader(headerOpts,"😎 Open Ticket Quick Setup: Overview")
terminal.bold.blue(stepCount(24)+"This is the overview of your ticket bot configuration!\n") terminal.bold.blue(stepCount(24)+"This is the overview of your ticket bot configuration!\n")
terminal.gray("Press 'Enter' to save the result to the config.\n\n") terminal.gray("Press 'Enter' to save the result to the config.\n\n")
@@ -1171,7 +1164,7 @@ async function renderQuickSetupReady(backFn:() => api.ODPromiseVoid){
} }
async function renderQuickSetupFinished(){ async function renderQuickSetupFinished(){
renderHeader("✅ Open Ticket Quick Setup: Ready") cli.renderHeader(headerOpts,"✅ Open Ticket Quick Setup: Ready")
terminal.bold.green("The config has been saved succesfully and the bot is now ready for usage!\n") terminal.bold.green("The config has been saved succesfully and the bot is now ready for usage!\n")
terminal.gray("Press 'Enter' to exit the Quick Setup CLI.\n\n") terminal.gray("Press 'Enter' to exit the Quick Setup CLI.\n\n")
@@ -1203,13 +1196,13 @@ async function renderQuickSetupFinished(){
}).promise }).promise
//stop CLI //stop CLI
return await terminate() return await cli.terminate(headerOpts)
} }
async function saveQuickSetupConfig(){ async function saveQuickSetupConfig(){
//GENERAL CONFIG //GENERAL CONFIG
const generalConfig = opendiscord.configs.get("opendiscord:general") const generalConfig = opendiscord.configs.get("opendiscord:general")
const generalConfigData: api.ODJsonConfig_DefaultGeneralData = { const generalConfigData: api.ODGeneralJsonConfig_GeneralData = {
_INFO:{ _INFO:{
support:"https://otdocs.dj-dj.be", support:"https://otdocs.dj-dj.be",
discord:"https://discord.dj-dj.be", discord:"https://discord.dj-dj.be",
@@ -1333,7 +1326,7 @@ async function saveQuickSetupConfig(){
//QUESTIONS CONFIG => no configuration needed (coming soonTM) //QUESTIONS CONFIG => no configuration needed (coming soonTM)
const questionsConfig = opendiscord.configs.get("opendiscord:questions") const questionsConfig = opendiscord.configs.get("opendiscord:questions")
const questionsConfigData: api.ODJsonConfig_DefaultQuestionsData = [ const questionsConfigData: api.ODQuestionsJsonConfig_QuestionsData = [
{ {
id:"example-question-1", id:"example-question-1",
name:"Example Question 1", name:"Example Question 1",
@@ -1366,8 +1359,8 @@ async function saveQuickSetupConfig(){
//OPTIONS CONFIG //OPTIONS CONFIG
const optionsConfig = opendiscord.configs.get("opendiscord:options") const optionsConfig = opendiscord.configs.get("opendiscord:options")
const optionsConfigData: api.ODJsonConfig_DefaultOptionsData = quickSetupStorage.ticketOptions.filter((ticket) => ticket !== null).map((ticket) => { const optionsConfigData: api.ODOptionsJsonConfig_OptionsData = quickSetupStorage.ticketOptions.filter((ticket) => ticket !== null).map((ticket) => {
const id = generateUniqueIdFromName(ticket.name) const id = cli.generateUniqueIdFromName(ticket.name)
quickSetupStorage.optionIdStorage.push(id) quickSetupStorage.optionIdStorage.push(id)
return { return {
@@ -1464,9 +1457,9 @@ async function saveQuickSetupConfig(){
//PANELS CONFIG //PANELS CONFIG
const panelsConfig = opendiscord.configs.get("opendiscord:panels") const panelsConfig = opendiscord.configs.get("opendiscord:panels")
const panelsConfigData: api.ODJsonConfig_DefaultPanelsData = [ const panelsConfigData: api.ODPanelsJsonConfig_PanelsData = [
{ {
id:generateUniqueIdFromName(quickSetupStorage.panelName ?? "ticket-panel"), id:cli.generateUniqueIdFromName(quickSetupStorage.panelName ?? "ticket-panel"),
name:quickSetupStorage.panelName ?? "Ticket Panel", name:quickSetupStorage.panelName ?? "Ticket Panel",
dropdown:quickSetupStorage.panelDropdown ?? false, dropdown:quickSetupStorage.panelDropdown ?? false,
options:quickSetupStorage.optionIdStorage, options:quickSetupStorage.optionIdStorage,
@@ -1506,7 +1499,7 @@ async function saveQuickSetupConfig(){
//TRANSCRIPTS CONFIG => no configuration needed (coming soonTM) //TRANSCRIPTS CONFIG => no configuration needed (coming soonTM)
const transcriptsConfig = opendiscord.configs.get("opendiscord:transcripts") const transcriptsConfig = opendiscord.configs.get("opendiscord:transcripts")
const transcriptsConfigData: api.ODJsonConfig_DefaultTranscriptsData = { const transcriptsConfigData: api.ODTranscriptsJsonConfig_TranscriptsData = {
general:{ general:{
enabled:(typeof quickSetupStorage.logChannel == "string"), enabled:(typeof quickSetupStorage.logChannel == "string"),
+55 -50
View File
@@ -5,32 +5,32 @@ import * as api from "./api"
import * as utilities from "@open-discord-bots/framework/utilities" import * as utilities from "@open-discord-bots/framework/utilities"
export class ODOpenTicketMain extends api.ODMain { export class ODOpenTicketMain extends api.ODMain {
declare versions: api.ODVersionManager_Default declare versions: api.ODMappedVersionManager
declare events: api.ODEventManager_Default declare events: api.ODMappedEventManager
declare plugins: api.ODPluginManager_Default declare plugins: api.ODMappedPluginManager
declare flags: api.ODFlagManager_Default declare flags: api.ODMappedFlagManager
declare progressbars: api.ODProgressBarManager_Default declare progressbars: api.ODMappedProgressBarManager
declare configs: api.ODConfigManager_Default declare configs: api.ODMappedConfigManager
declare databases: api.ODDatabaseManager_Default declare databases: api.ODMappedDatabaseManager
declare sessions: api.ODSessionManager_Default declare sessions: api.ODMappedSessionManager
declare languages: api.ODLanguageManager_Default declare languages: api.ODMappedLanguageManager
declare checkers: api.ODCheckerManager_Default declare checkers: api.ODMappedCheckerManager
declare builders: api.ODBuilderManager_Default declare builders: api.ODMappedBuilderManager
declare responders: api.ODResponderManager_Default declare responders: api.ODMappedResponderManager
declare actions: api.ODActionManager_Default declare actions: api.ODMappedActionManager
declare verifybars: api.ODVerifyBarManager_Default declare verifybars: api.ODMappedVerifyBarManager
declare permissions: api.ODPermissionManager_Default declare permissions: api.ODMappedPermissionManager
declare cooldowns: api.ODCooldownManager_Default declare cooldowns: api.ODMappedCooldownManager
declare helpmenu: api.ODHelpMenuManager_Default declare helpmenu: api.ODMappedHelpMenuManager
declare stats: api.ODStatsManager_Default declare statistics: api.ODMappedStatisticManager
declare code: api.ODCodeManager_Default declare code: api.ODMappedCodeManager
declare posts: api.ODPostManager_Default declare posts: api.ODMappedPostManager
declare client: api.ODClientManager_Default declare client: api.ODMappedClientManager
declare livestatus: api.ODLiveStatusManager_Default declare livestatus: api.ODMappedLiveStatusManager
declare startscreen: api.ODStartScreenManager_Default declare startscreen: api.ODMappedStartScreenManager
///////////////////// /////////////////////
//// OPEN TICKET //// //// OPEN TICKET ////
@@ -49,53 +49,58 @@ export class ODOpenTicketMain extends api.ODMain {
/**The manager that manages the ticket blacklist. (people who are blacklisted can't create a ticket) */ /**The manager that manages the ticket blacklist. (people who are blacklisted can't create a ticket) */
blacklist: api.ODBlacklistManager blacklist: api.ODBlacklistManager
/**The manager that manages the ticket transcripts. (both the history & compilers) */ /**The manager that manages the ticket transcripts. (both the history & compilers) */
transcripts: api.ODTranscriptManager_Default transcripts: api.ODMappedTranscriptManager
/**The manager that manages all reaction roles in the bot. (here, you can add additional data to roles) */ /**The manager that manages all reaction roles in the bot. (here, you can add additional data to roles) */
roles: api.ODRoleManager roles: api.ODRoleManager
/**The manager that manages all priority levels in the bot. (register/edit ticket priority levels) */ /**The manager that manages all priority levels in the bot. (register/edit ticket priority levels) */
priorities: api.ODPriorityManager_Default priorities: api.ODMappedPriorityManager
constructor(){ constructor(){
const version = api.ODVersion.fromString("opendiscord:version","v4.1.3") const version = api.ODVersion.fromString("opendiscord:version","v4.1.3")
const debugfile = new api.ODDebugFileManager("./","otdebug.txt",5000,version) const debugfile = new api.ODDebugFileManager("./","otdebug.txt",5000,version)
const console = new api.ODConsoleManager(100,debugfile) const console = new api.ODConsoleManager(100,debugfile)
const debug = new api.ODDebugger(console) const debug = new api.ODDebugger(console)
const client = new api.ODClientManager_Default(debug) const client = new api.ODMappedClientManager(debug)
const livestatus = new api.ODLiveStatusManager_Default(debug,console) const livestatus = new api.ODMappedLiveStatusManager(debug,console)
const permissions = new api.ODPermissionManager_Default(debug,client) const permissions = new api.ODMappedPermissionManager(debug,client)
super({ super({
versions:new api.ODVersionManager_Default(), versions:new api.ODMappedVersionManager(),
debugfile,console,debug, debugfile,console,debug,
events:new api.ODEventManager_Default(debug), events:new api.ODMappedEventManager(debug),
processStartupDate:new Date(), processStartupDate:new Date(),
readyStartupDate:null, readyStartupDate:null,
plugins:new api.ODPluginManager_Default(debug), plugins:new api.ODMappedPluginManager(debug),
flags:new api.ODFlagManager_Default(debug), flags:new api.ODMappedFlagManager(debug),
progressbars:new api.ODProgressBarManager_Default(debug), progressbars:new api.ODMappedProgressBarManager(debug),
configs:new api.ODConfigManager_Default(debug), configs:new api.ODMappedConfigManager(debug),
databases:new api.ODDatabaseManager_Default(debug), databases:new api.ODMappedDatabaseManager(debug),
sessions:new api.ODSessionManager_Default(debug), sessions:new api.ODMappedSessionManager(debug),
languages:new api.ODLanguageManager_Default(debug,false), languages:new api.ODMappedLanguageManager(debug,false),
checkers:new api.ODCheckerManager_Default(debug,new api.ODCheckerStorage(),new api.ODCheckerRenderer_Default(),new api.ODCheckerTranslationRegister_Default(),new api.ODCheckerFunctionManager_Default(debug)), checkers:new api.ODMappedCheckerManager(debug,
builders:new api.ODBuilderManager_Default(debug), new api.ODCheckerStorage(),
new api.ODDefaultCheckerRenderer("#f8ba00","https://discord.dj-dj.be","https://otdocs.dj-dj.be"),
new api.ODMappedCheckerTranslationRegister(),
new api.ODMappedCheckerFunctionManager(debug)
),
builders:new api.ODMappedBuilderManager(debug),
client, client,
responders:new api.ODResponderManager_Default(debug,client), responders:new api.ODMappedResponderManager(debug,client),
actions:new api.ODActionManager_Default(debug), actions:new api.ODMappedActionManager(debug),
verifybars:new api.ODVerifyBarManager_Default(debug), verifybars:new api.ODMappedVerifyBarManager(debug),
permissions, permissions,
cooldowns:new api.ODCooldownManager_Default(debug), cooldowns:new api.ODMappedCooldownManager(debug),
helpmenu:new api.ODHelpMenuManager_Default(debug), helpmenu:new api.ODMappedHelpMenuManager(debug),
stats:new api.ODStatsManager_Default(debug), statistics:new api.ODMappedStatisticManager(debug),
code:new api.ODCodeManager_Default(debug), code:new api.ODMappedCodeManager(debug),
posts:new api.ODPostManager_Default(debug), posts:new api.ODMappedPostManager(debug),
sharedFuses:utilities.sharedFuses, sharedFuses:utilities.sharedFuses,
env:new api.ODEnvHelper(), env:new api.ODEnvHelper(),
livestatus, livestatus,
startscreen:new api.ODStartScreenManager_Default(debug,livestatus), startscreen:new api.ODMappedStartScreenManager(debug,livestatus),
},"openticket") },"openticket")
this.livestatus.useMain(this) this.livestatus.useMain(this)
@@ -120,8 +125,8 @@ export class ODOpenTicketMain extends api.ODMain {
this.panels = new api.ODPanelManager(debug) this.panels = new api.ODPanelManager(debug)
this.tickets = new api.ODTicketManager(debug,client) this.tickets = new api.ODTicketManager(debug,client)
this.blacklist = new api.ODBlacklistManager(debug) this.blacklist = new api.ODBlacklistManager(debug)
this.transcripts = new api.ODTranscriptManager_Default(debug,this.tickets,client,permissions) this.transcripts = new api.ODMappedTranscriptManager(debug,this.tickets,client,permissions)
this.roles = new api.ODRoleManager(debug) this.roles = new api.ODRoleManager(debug)
this.priorities = new api.ODPriorityManager_Default(debug) this.priorities = new api.ODMappedPriorityManager(debug)
} }
} }
@@ -1,20 +1,19 @@
/////////////////////////////////////// ///////////////////////////////////////
//DEFAULT ACTION MODULE //OPEN TICKET ACTION MAPPINGS
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
import { ODWorkerManager_Default } from "./worker"
import * as discord from "discord.js" import * as discord from "discord.js"
import { ODRoleOption, ODTicketOption } from "../openticket/option" import { ODRoleOption, ODTicketOption } from "../api/option"
import { ODTicket, ODTicketClearFilter } from "../openticket/ticket" import { ODTicket, ODTicketClearFilter } from "../api/ticket"
import { ODTranscriptCompiler, ODTranscriptCompilerCompileResult } from "../openticket/transcript" import { ODTranscriptCompiler, ODTranscriptCompilerCompileResult } from "../api/transcript"
import { ODRole, ODRoleUpdateMode, ODRoleUpdateResult } from "../openticket/role" import { ODRole, ODRoleUpdateMode, ODRoleUpdateResult } from "../api/role"
import { ODPriorityLevel } from "../openticket/priority" import { ODPriorityLevel } from "../api/priority"
/**## ODActionManagerIds_Default `interface` /**## ODActionManagerIdMappings `interface`
* This interface is a list of ids available in the `ODActionManager_Default` class. * A list of all available IDs in the default `ODActionManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODActionManagerIds_Default { export interface ODActionManagerIdMappings extends api.ODActionManagerIdConstraint {
"opendiscord:create-ticket-permissions":{ "opendiscord:create-ticket-permissions":{
source:"panel-button"|"panel-dropdown"|"slash"|"text"|"other", source:"panel-button"|"panel-dropdown"|"slash"|"text"|"other",
params:{guild:discord.Guild,user:discord.User,option:ODTicketOption}, params:{guild:discord.Guild,user:discord.User,option:ODTicketOption},
@@ -131,41 +130,16 @@ export interface ODActionManagerIds_Default {
}, },
} }
/**## ODActionManager_Default `default_class` type ODNoGeneric<T extends Record<string|number|symbol,any>> = {
* This is a special class that adds type definitions & typescript to the ODActionManager class. [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: T[K]
* It doesn't add any extra features! }
* export type ODActionManagerMappingsModifier<T extends api.ODActionManagerIdConstraint = ODActionManagerIdMappings> = {
* This default class is made for the global variable `opendiscord.actions`! [K in keyof T]: api.ODAction<T[K]["source"],T[K]["params"],T[K]["result"],T[K]["workers"]>
*/
export class ODActionManager_Default extends api.ODActionManager {
get<ActionId extends keyof ODActionManagerIds_Default>(id:ActionId): ODAction_Default<ODActionManagerIds_Default[ActionId]["source"],ODActionManagerIds_Default[ActionId]["params"],ODActionManagerIds_Default[ActionId]["result"],ODActionManagerIds_Default[ActionId]["workers"]>
get(id:api.ODValidId): api.ODAction<string,any,any>|null
get(id:api.ODValidId): api.ODAction<string,any,any>|null {
return super.get(id)
}
remove<ActionId extends keyof ODActionManagerIds_Default>(id:ActionId): ODAction_Default<ODActionManagerIds_Default[ActionId]["source"],ODActionManagerIds_Default[ActionId]["params"],ODActionManagerIds_Default[ActionId]["result"],ODActionManagerIds_Default[ActionId]["workers"]>
remove(id:api.ODValidId): api.ODAction<string,any,any>|null
remove(id:api.ODValidId): api.ODAction<string,any,any>|null {
return super.remove(id)
}
exists(id:keyof ODActionManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
} }
/**## ODAction_Default `default_class` type test = ODActionManagerMappingsModifier
* This is a special class that adds type definitions & typescript to the ODAction class.
* It doesn't add any extra features! /**## ODMappedActionManager `class
* * A special class with types for the Open Ticket `ODActionManager` class.
* This default class is made for the default `ODAction`'s!
*/ */
export class ODAction_Default<Source extends string, Params extends object, Result extends object, WorkerIds extends string> extends api.ODAction<Source,Params,Result> { export class ODMappedActionManager extends api.ODActionManager<ODActionManagerIdMappings> {}
declare workers: ODWorkerManager_Default<Result,Source,Params,WorkerIds>
}
+21
View File
@@ -0,0 +1,21 @@
///////////////////////////////////////
//BASE MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODVersionManagerIdMappings `interface`
* A list of all available IDs in the default `ODVersionManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODVersionManagerIdMappings extends api.ODVersionManagerIdConstraint {
"opendiscord:version":api.ODVersion,
"opendiscord:last-version":api.ODVersion,
"opendiscord:api":api.ODVersion,
"opendiscord:transcripts":api.ODVersion,
"opendiscord:livestatus":api.ODVersion
}
/**## ODMappedVersionManager `class
* A special class with types for the Open Ticket `ODVersionManager` class.
*/
export class ODMappedVersionManager extends api.ODVersionManager<ODVersionManagerIdMappings> {}
@@ -1,37 +1,21 @@
/////////////////////////////////////// ///////////////////////////////////////
//DEFAULT BUILDER MODULE //OPEN TICKET BUILDER MAPPINGS
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
import { ODWorkerManager_Default } from "./worker"
import { ODPermissionEmbedType } from "./permission" import { ODPermissionEmbedType } from "./permission"
import { ODTranscriptCompiler, ODTranscriptCompilerCompileResult } from "../openticket/transcript" import { ODTranscriptCompiler, ODTranscriptCompilerCompileResult } from "../api/transcript"
import { ODRoleOption, ODTicketOption, ODWebsiteOption } from "../openticket/option" import { ODRoleOption, ODTicketOption, ODWebsiteOption } from "../api/option"
import { ODTicket, ODTicketClearFilter } from "../openticket/ticket" import { ODTicket, ODTicketClearFilter } from "../api/ticket"
import { ODRole, ODRoleUpdateResult } from "../openticket/role" import { ODRole, ODRoleUpdateResult } from "../api/role"
import { ODPriorityLevel } from "../openticket/priority" import { ODPriorityLevel } from "../api/priority"
import { ODPanel } from "../openticket/panel" import { ODPanel } from "../api/panel"
import * as discord from "discord.js" import * as discord from "discord.js"
/**## ODBuilderManager_Default `default_class` /**## ODButtonManagerIdMappings `interface`
* This is a special class that adds type definitions & typescript to the ODBuilderManager class. * A list of all available IDs in the default `ODButtonManager` class in `opendiscord`.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.builders`!
*/
export class ODBuilderManager_Default extends api.ODBuilderManager {
declare buttons: ODButtonManager_Default
declare dropdowns: ODDropdownManager_Default
declare files: ODFileManager_Default
declare embeds: ODEmbedManager_Default
declare messages: ODMessageManager_Default
declare modals: ODModalManager_Default
}
/**## ODButtonManagerIds_Default `interface`
* This interface is a list of ids available in the `ODButtonManager_Default` class.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODButtonManagerIds_Default { export interface ODButtonManagerIdMappings extends api.ODButtonManagerIdConstraint {
"opendiscord:verifybar-success":{source:"verifybar"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,customData?:string,customColor?:api.ODValidButtonColor,customLabel?:string,customEmoji?:string},workers:"opendiscord:verifybar-success"}, "opendiscord:verifybar-success":{source:"verifybar"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,customData?:string,customColor?:api.ODValidButtonColor,customLabel?:string,customEmoji?:string},workers:"opendiscord:verifybar-success"},
"opendiscord:verifybar-failure":{source:"verifybar"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,customData?:string,customColor?:api.ODValidButtonColor,customLabel?:string,customEmoji?:string},workers:"opendiscord:verifybar-failure"}, "opendiscord:verifybar-failure":{source:"verifybar"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,customData?:string,customColor?:api.ODValidButtonColor,customLabel?:string,customEmoji?:string},workers:"opendiscord:verifybar-failure"},
@@ -63,165 +47,27 @@ export interface ODButtonManagerIds_Default {
"opendiscord:clear-continue":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,filter:ODTicketClearFilter,list:string[]},workers:"opendiscord:clear-continue"}, "opendiscord:clear-continue":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,filter:ODTicketClearFilter,list:string[]},workers:"opendiscord:clear-continue"},
} }
/**## ODButtonManager_Default `default_class` /**## ODDropdownManagerIdMappings `interface`
* This is a special class that adds type definitions & typescript to the ODButtonManager class. * A list of all available IDs in the default `ODDropdownManager` class in `opendiscord`.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.builders.buttons`!
*/
export class ODButtonManager_Default extends api.ODButtonManager {
get<ButtonId extends keyof ODButtonManagerIds_Default>(id:ButtonId): ODButton_Default<ODButtonManagerIds_Default[ButtonId]["source"],ODButtonManagerIds_Default[ButtonId]["params"],ODButtonManagerIds_Default[ButtonId]["workers"]>
get(id:api.ODValidId): api.ODButton<string,any>|null
get(id:api.ODValidId): api.ODButton<string,any>|null {
return super.get(id)
}
remove<ButtonId extends keyof ODButtonManagerIds_Default>(id:ButtonId): ODButton_Default<ODButtonManagerIds_Default[ButtonId]["source"],ODButtonManagerIds_Default[ButtonId]["params"],ODButtonManagerIds_Default[ButtonId]["workers"]>
remove(id:api.ODValidId): api.ODButton<string,any>|null
remove(id:api.ODValidId): api.ODButton<string,any>|null {
return super.remove(id)
}
exists(id:keyof ODButtonManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getSafe<ButtonId extends keyof ODButtonManagerIds_Default>(id:ButtonId): ODButton_Default<ODButtonManagerIds_Default[ButtonId]["source"],ODButtonManagerIds_Default[ButtonId]["params"],ODButtonManagerIds_Default[ButtonId]["workers"]>
getSafe(id:api.ODValidId): api.ODButton<string,any>
getSafe(id:api.ODValidId): api.ODButton<string,any> {
return super.getSafe(id)
}
}
/**## ODButton_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODButton class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODButton`'s!
*/
export class ODButton_Default<Source extends string, Params, WorkerIds extends string> extends api.ODButton<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODButtonInstance,Source,Params,WorkerIds>
}
/**## ODDropdownManagerIds_Default `interface`
* This interface is a list of ids available in the `ODDropdownManager_Default` class.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODDropdownManagerIds_Default { export interface ODDropdownManagerIdMappings extends api.ODDropdownManagerIdConstraint {
"opendiscord:panel-dropdown-tickets":{source:"slash"|"text"|"auto-update"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,panel:ODPanel,options:ODTicketOption[]},workers:"opendiscord:panel-dropdown-tickets"} "opendiscord:panel-dropdown-tickets":{source:"slash"|"text"|"auto-update"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,panel:ODPanel,options:ODTicketOption[]},workers:"opendiscord:panel-dropdown-tickets"}
} }
/**## ODDropdownManager_Default `default_class` /**## ODFileManagerIdMappings `interface`
* This is a special class that adds type definitions & typescript to the ODDropdownManager class. * A list of all available IDs in the default `ODFileManager` class in `opendiscord`.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.builders.dropdowns`!
*/
export class ODDropdownManager_Default extends api.ODDropdownManager {
get<DropdownId extends keyof ODDropdownManagerIds_Default>(id:DropdownId): ODDropdown_Default<ODDropdownManagerIds_Default[DropdownId]["source"],ODDropdownManagerIds_Default[DropdownId]["params"],ODDropdownManagerIds_Default[DropdownId]["workers"]>
get(id:api.ODValidId): api.ODDropdown<string,any>|null
get(id:api.ODValidId): api.ODDropdown<string,any>|null {
return super.get(id)
}
remove<DropdownId extends keyof ODDropdownManagerIds_Default>(id:DropdownId): ODDropdown_Default<ODDropdownManagerIds_Default[DropdownId]["source"],ODDropdownManagerIds_Default[DropdownId]["params"],ODDropdownManagerIds_Default[DropdownId]["workers"]>
remove(id:api.ODValidId): api.ODDropdown<string,any>|null
remove(id:api.ODValidId): api.ODDropdown<string,any>|null {
return super.remove(id)
}
exists(id:keyof ODDropdownManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getSafe<DropdownId extends keyof ODDropdownManagerIds_Default>(id:DropdownId): ODDropdown_Default<ODDropdownManagerIds_Default[DropdownId]["source"],ODDropdownManagerIds_Default[DropdownId]["params"],ODDropdownManagerIds_Default[DropdownId]["workers"]>
getSafe(id:api.ODValidId): api.ODDropdown<string,any>
getSafe(id:api.ODValidId): api.ODDropdown<string,any> {
return super.getSafe(id)
}
}
/**## ODDropdown_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODDropdown class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODDropdown`'s!
*/
export class ODDropdown_Default<Source extends string, Params, WorkerIds extends string> extends api.ODDropdown<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODDropdownInstance,Source,Params,WorkerIds>
}
/**## ODFileManagerIds_Default `interface`
* This interface is a list of ids available in the `ODFileManager_Default` class.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODFileManagerIds_Default { export interface ODFileManagerIdMappings extends api.ODFileManagerIdConstraint {
"opendiscord:text-transcript":{source:"channel"|"creator-dm"|"participant-dm"|"active-admin-dm"|"every-admin-dm"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,compiler:ODTranscriptCompiler<any,object|null>,result:ODTranscriptCompilerCompileResult<any>},workers:"opendiscord:text-transcript"} "opendiscord:text-transcript":{source:"channel"|"creator-dm"|"participant-dm"|"active-admin-dm"|"every-admin-dm"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,compiler:ODTranscriptCompiler<any,object|null>,result:ODTranscriptCompilerCompileResult<any>},workers:"opendiscord:text-transcript"}
} }
/**## ODFileManager_Default `default_class` /**## ODEmbedManagerIdMappings `interface`
* This is a special class that adds type definitions & typescript to the ODFileManager class. * A list of all available IDs in the default `ODEmbedManager` class in `opendiscord`.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.builders.files`!
*/
export class ODFileManager_Default extends api.ODFileManager {
get<FileId extends keyof ODFileManagerIds_Default>(id:FileId): ODFile_Default<ODFileManagerIds_Default[FileId]["source"],ODFileManagerIds_Default[FileId]["params"],ODFileManagerIds_Default[FileId]["workers"]>
get(id:api.ODValidId): api.ODFile<string,any>|null
get(id:api.ODValidId): api.ODFile<string,any>|null {
return super.get(id)
}
remove<FileId extends keyof ODFileManagerIds_Default>(id:FileId): ODFile_Default<ODFileManagerIds_Default[FileId]["source"],ODFileManagerIds_Default[FileId]["params"],ODFileManagerIds_Default[FileId]["workers"]>
remove(id:api.ODValidId): api.ODFile<string,any>|null
remove(id:api.ODValidId): api.ODFile<string,any>|null {
return super.remove(id)
}
exists(id:keyof ODFileManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getSafe<FileId extends keyof ODFileManagerIds_Default>(id:FileId): ODFile_Default<ODFileManagerIds_Default[FileId]["source"],ODFileManagerIds_Default[FileId]["params"],ODFileManagerIds_Default[FileId]["workers"]>
getSafe(id:api.ODValidId): api.ODFile<string,any>
getSafe(id:api.ODValidId): api.ODFile<string,any> {
return super.getSafe(id)
}
}
/**## ODFile_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODFile class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODFile`'s!
*/
export class ODFile_Default<Source extends string, Params, WorkerIds extends string> extends api.ODFile<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODFileInstance,Source,Params,WorkerIds>
}
/**## ODEmbedManagerIds_Default `interface`
* This interface is a list of ids available in the `ODEmbedManager_Default` class.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODEmbedManagerIds_Default { export interface ODEmbedManagerIdMappings extends api.ODEmbedManagerIdConstraint {
"opendiscord:error":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,error:string,layout:"simple"|"advanced",customTitle?:string},workers:"opendiscord:error"}, "opendiscord:error":{source:"slash"|"text"|"button"|"dropdown"|"modal"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,error:string,layout:"simple"|"advanced",customTitle?:string},workers:"opendiscord:error"},
"opendiscord:error-option-missing":{source:"slash"|"text"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,error:api.ODTextCommandErrorMissingOption},workers:"opendiscord:error-option-missing"}, "opendiscord:error-option-missing":{source:"slash"|"text"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,error:api.ODTextCommandErrorMissingOption},workers:"opendiscord:error-option-missing"},
"opendiscord:error-option-invalid":{source:"slash"|"text"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,error:api.ODTextCommandErrorInvalidOption},workers:"opendiscord:error-option-invalid"}, "opendiscord:error-option-invalid":{source:"slash"|"text"|"other",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,error:api.ODTextCommandErrorInvalidOption},workers:"opendiscord:error-option-invalid"},
@@ -299,57 +145,11 @@ export interface ODEmbedManagerIds_Default {
"opendiscord:transfer-message":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,oldCreator:discord.User,newCreator:discord.User,reason:string|null},workers:"opendiscord:transfer-message"}, "opendiscord:transfer-message":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,oldCreator:discord.User,newCreator:discord.User,reason:string|null},workers:"opendiscord:transfer-message"},
} }
/**## ODEmbedManager_Default `default_class` /**## ODMessageManagerIdMappings `interface`
* This is a special class that adds type definitions & typescript to the ODEmbedManager class. * A list of all available IDs in the default `ODMessageManager` class in `opendiscord`.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.builders.embeds`!
*/
export class ODEmbedManager_Default extends api.ODEmbedManager {
get<EmbedId extends keyof ODEmbedManagerIds_Default>(id:EmbedId): ODEmbed_Default<ODEmbedManagerIds_Default[EmbedId]["source"],ODEmbedManagerIds_Default[EmbedId]["params"],ODEmbedManagerIds_Default[EmbedId]["workers"]>
get(id:api.ODValidId): api.ODEmbed<string,any>|null
get(id:api.ODValidId): api.ODEmbed<string,any>|null {
return super.get(id)
}
remove<EmbedId extends keyof ODEmbedManagerIds_Default>(id:EmbedId): ODEmbed_Default<ODEmbedManagerIds_Default[EmbedId]["source"],ODEmbedManagerIds_Default[EmbedId]["params"],ODEmbedManagerIds_Default[EmbedId]["workers"]>
remove(id:api.ODValidId): api.ODEmbed<string,any>|null
remove(id:api.ODValidId): api.ODEmbed<string,any>|null {
return super.remove(id)
}
exists(id:keyof ODEmbedManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getSafe<EmbedId extends keyof ODEmbedManagerIds_Default>(id:EmbedId): ODEmbed_Default<ODEmbedManagerIds_Default[EmbedId]["source"],ODEmbedManagerIds_Default[EmbedId]["params"],ODEmbedManagerIds_Default[EmbedId]["workers"]>
getSafe(id:api.ODValidId): api.ODEmbed<string,any>
getSafe(id:api.ODValidId): api.ODEmbed<string,any> {
return super.getSafe(id)
}
}
/**## ODEmbed_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODEmbed class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODEmbed`'s!
*/
export class ODEmbed_Default<Source extends string, Params, WorkerIds extends string> extends api.ODEmbed<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODEmbedInstance,Source,Params,WorkerIds>
}
/**## ODMessageManagerIds_Default `interface`
* This interface is a list of ids available in the `ODMessageManager_Default` class.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODMessageManagerIds_Default { export interface ODMessageManagerIdMappings extends api.ODMessageManagerIdConstraint {
"opendiscord:verifybar-ticket-message":{source:"verifybar",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,originalMessage:discord.Message<boolean>},workers:"opendiscord:verifybar-ticket-message"}, "opendiscord:verifybar-ticket-message":{source:"verifybar",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,originalMessage:discord.Message<boolean>},workers:"opendiscord:verifybar-ticket-message"},
"opendiscord:verifybar-close-message":{source:"verifybar",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,originalMessage:discord.Message<boolean>},workers:"opendiscord:verifybar-close-message"}, "opendiscord:verifybar-close-message":{source:"verifybar",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,originalMessage:discord.Message<boolean>},workers:"opendiscord:verifybar-close-message"},
"opendiscord:verifybar-reopen-message":{source:"verifybar",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,originalMessage:discord.Message<boolean>},workers:"opendiscord:verifybar-reopen-message"}, "opendiscord:verifybar-reopen-message":{source:"verifybar",params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar,originalMessage:discord.Message<boolean>},workers:"opendiscord:verifybar-reopen-message"},
@@ -438,57 +238,11 @@ export interface ODMessageManagerIds_Default {
"opendiscord:transfer-message":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,oldCreator:discord.User,newCreator:discord.User,reason:string|null},workers:"opendiscord:transfer-message"}, "opendiscord:transfer-message":{source:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.GuildTextBasedChannel,user:discord.User,ticket:ODTicket,oldCreator:discord.User,newCreator:discord.User,reason:string|null},workers:"opendiscord:transfer-message"},
} }
/**## ODMessageManager_Default `default_class` /**## ODModalManagerIdMappings `interface`
* This is a special class that adds type definitions & typescript to the ODMessageManager class. * A list of all available IDs in the default `ODModalManager` class in `opendiscord`.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.builders.messages`!
*/
export class ODMessageManager_Default extends api.ODMessageManager {
get<MessageId extends keyof ODMessageManagerIds_Default>(id:MessageId): ODMessage_Default<ODMessageManagerIds_Default[MessageId]["source"],ODMessageManagerIds_Default[MessageId]["params"],ODMessageManagerIds_Default[MessageId]["workers"]>
get(id:api.ODValidId): api.ODMessage<string,any>|null
get(id:api.ODValidId): api.ODMessage<string,any>|null {
return super.get(id)
}
remove<MessageId extends keyof ODMessageManagerIds_Default>(id:MessageId): ODMessage_Default<ODMessageManagerIds_Default[MessageId]["source"],ODMessageManagerIds_Default[MessageId]["params"],ODMessageManagerIds_Default[MessageId]["workers"]>
remove(id:api.ODValidId): api.ODMessage<string,any>|null
remove(id:api.ODValidId): api.ODMessage<string,any>|null {
return super.remove(id)
}
exists(id:keyof ODMessageManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getSafe<MessageId extends keyof ODMessageManagerIds_Default>(id:MessageId): ODMessage_Default<ODMessageManagerIds_Default[MessageId]["source"],ODMessageManagerIds_Default[MessageId]["params"],ODMessageManagerIds_Default[MessageId]["workers"]>
getSafe(id:api.ODValidId): api.ODMessage<string,any>
getSafe(id:api.ODValidId): api.ODMessage<string,any> {
return super.getSafe(id)
}
}
/**## ODMessage_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODMessage class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODMessage`'s!
*/
export class ODMessage_Default<Source extends string, Params, WorkerIds extends string> extends api.ODMessage<Source,Params> {
declare workers: ODWorkerManager_Default<api.ODMessageInstance,Source,Params,WorkerIds>
}
/**## ODModalManagerIds_Default `interface`
* This interface is a list of ids available in the `ODModalManager_Default` class.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODModalManagerIds_Default { export interface ODModalManagerIdMappings extends api.ODModalManagerIdConstraint {
"opendiscord:ticket-questions":{source:"panel-button"|"panel-dropdown"|"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,option:ODTicketOption},workers:"opendiscord:ticket-questions"} "opendiscord:ticket-questions":{source:"panel-button"|"panel-dropdown"|"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,option:ODTicketOption},workers:"opendiscord:ticket-questions"}
"opendiscord:close-ticket-reason":{source:"ticket-message"|"reopen-message"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket},workers:"opendiscord:close-ticket-reason"} "opendiscord:close-ticket-reason":{source:"ticket-message"|"reopen-message"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket},workers:"opendiscord:close-ticket-reason"}
"opendiscord:reopen-ticket-reason":{source:"ticket-message"|"close-message"|"autoclose-message"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket},workers:"opendiscord:reopen-ticket-reason"} "opendiscord:reopen-ticket-reason":{source:"ticket-message"|"close-message"|"autoclose-message"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket},workers:"opendiscord:reopen-ticket-reason"}
@@ -499,48 +253,37 @@ export interface ODModalManagerIds_Default {
"opendiscord:unpin-ticket-reason":{source:"ticket-message"|"pin-message"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket},workers:"opendiscord:unpin-ticket-reason"} "opendiscord:unpin-ticket-reason":{source:"ticket-message"|"pin-message"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket},workers:"opendiscord:unpin-ticket-reason"}
} }
/**## ODModalManager_Default `default_class` /**## ODMappedButtonManager `class
* This is a special class that adds type definitions & typescript to the ODModalManager class. * A special class with types for the Open Ticket `ODButtonManager` class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.builders.modals`!
*/ */
export class ODModalManager_Default extends api.ODModalManager { export class ODMappedButtonManager extends api.ODButtonManager<ODButtonManagerIdMappings> {}
get<ModalId extends keyof ODModalManagerIds_Default>(id:ModalId): ODModal_Default<ODModalManagerIds_Default[ModalId]["source"],ODModalManagerIds_Default[ModalId]["params"],ODModalManagerIds_Default[ModalId]["workers"]>
get(id:api.ODValidId): api.ODModal<string,any>|null
get(id:api.ODValidId): api.ODModal<string,any>|null { /**## ODMappedDropdownManager `class
return super.get(id) * A special class with types for the Open Ticket `ODDropdownManager` class.
}
remove<ModalId extends keyof ODModalManagerIds_Default>(id:ModalId): ODModal_Default<ODModalManagerIds_Default[ModalId]["source"],ODModalManagerIds_Default[ModalId]["params"],ODModalManagerIds_Default[ModalId]["workers"]>
remove(id:api.ODValidId): api.ODModal<string,any>|null
remove(id:api.ODValidId): api.ODModal<string,any>|null {
return super.remove(id)
}
exists(id:keyof ODModalManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getSafe<ModalId extends keyof ODModalManagerIds_Default>(id:ModalId): ODModal_Default<ODModalManagerIds_Default[ModalId]["source"],ODModalManagerIds_Default[ModalId]["params"],ODModalManagerIds_Default[ModalId]["workers"]>
getSafe(id:api.ODValidId): api.ODModal<string,any>
getSafe(id:api.ODValidId): api.ODModal<string,any> {
return super.getSafe(id)
}
}
/**## ODModal_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODModal class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODModal`'s!
*/ */
export class ODModal_Default<Source extends string, Params, WorkerIds extends string> extends api.ODModal<Source,Params> { export class ODMappedDropdownManager extends api.ODDropdownManager<ODDropdownManagerIdMappings> {}
declare workers: ODWorkerManager_Default<api.ODModalInstance,Source,Params,WorkerIds>
} /**## ODMappedFileManager `class
* A special class with types for the Open Ticket `ODFileManager` class.
*/
export class ODMappedFileManager extends api.ODFileManager<ODFileManagerIdMappings> {}
/**## ODMappedEmbedManager `class
* A special class with types for the Open Ticket `ODEmbedManager` class.
*/
export class ODMappedEmbedManager extends api.ODEmbedManager<ODEmbedManagerIdMappings> {}
/**## ODMappedMessageManager `class
* A special class with types for the Open Ticket `ODMessageManager` class.
*/
export class ODMappedMessageManager extends api.ODMessageManager<ODMessageManagerIdMappings> {}
/**## ODMappedModalManager `class
* A special class with types for the Open Ticket `ODModalManager` class.
*/
export class ODMappedModalManager extends api.ODModalManager<ODModalManagerIdMappings> {}
/**## ODMappedBuilderManager `class
* A special class with types for the Open Ticket `ODBuilderManager` class.
*/
export class ODMappedBuilderManager extends api.ODBuilderManager<ODButtonManagerIdMappings,ODDropdownManagerIdMappings,ODFileManagerIdMappings,ODEmbedManagerIdMappings,ODMessageManagerIdMappings,ODModalManagerIdMappings> {}
+145
View File
@@ -0,0 +1,145 @@
///////////////////////////////////////
//OPEN TICKET CONFIG CHECKER MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODBCheckerManagerIdMappings `interface`
* A list of all available IDs in the default `ODBCheckerManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODCheckerManagerIdMappings extends api.ODCheckerManagerIdConstraint {
"opendiscord:general":api.ODChecker,
"opendiscord:questions":api.ODChecker,
"opendiscord:options":api.ODChecker,
"opendiscord:panels":api.ODChecker,
"opendiscord:transcripts":api.ODChecker
}
/**## ODCheckerTranslationRegisterOtherIdMappings `type`
* A list of all available IDs in the default `ODCheckerTranslationRegister` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export type ODCheckerTranslationRegisterOtherIdMappings = (
"opendiscord:header-openticket"|
"opendiscord:header-configchecker"|
"opendiscord:header-description"|
"opendiscord:type-error"|
"opendiscord:type-warning"|
"opendiscord:type-info"|
"opendiscord:data-path"|
"opendiscord:data-docs"|
"opendiscord:data-message"|
"opendiscord:compact-information"|
"opendiscord:footer-error"|
"opendiscord:footer-warning"|
"opendiscord:footer-support"
)
/**## ODCheckerTranslationRegisterMessageIdMappings `type`
* A list of all available IDs in the default `ODCheckerTranslationRegister` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export type ODCheckerTranslationRegisterMessageIdMappings = (
"opendiscord:invalid-type"|
"opendiscord:property-missing"|
"opendiscord:property-optional"|
"opendiscord:object-disabled"|
"opendiscord:null-invalid"|
"opendiscord:switch-invalid-type"|
"opendiscord:object-switch-invalid-type"|
"opendiscord:string-too-short"|
"opendiscord:string-too-long"|
"opendiscord:string-length-invalid"|
"opendiscord:string-starts-with"|
"opendiscord:string-ends-with"|
"opendiscord:string-contains"|
"opendiscord:string-inverted-contains"|
"opendiscord:string-choices"|
"opendiscord:string-lowercase"|
"opendiscord:string-uppercase"|
"opendiscord:string-special-characters"|
"opendiscord:string-no-spaces"|
"opendiscord:string-regex"|
"opendiscord:string-capital-word"|
"opendiscord:string-capital-sentence"|
"opendiscord:string-punctuation"|
"opendiscord:number-nan"|
"opendiscord:number-too-short"|
"opendiscord:number-too-long"|
"opendiscord:number-length-invalid"|
"opendiscord:number-too-small"|
"opendiscord:number-too-large"|
"opendiscord:number-not-equal"|
"opendiscord:number-step"|
"opendiscord:number-step-offset"|
"opendiscord:number-starts-with"|
"opendiscord:number-ends-with"|
"opendiscord:number-contains"|
"opendiscord:number-inverted-contains"|
"opendiscord:number-choices"|
"opendiscord:number-float"|
"opendiscord:number-negative"|
"opendiscord:number-positive"|
"opendiscord:number-zero"|
"opendiscord:boolean-true"|
"opendiscord:boolean-false"|
"opendiscord:array-empty-disabled"|
"opendiscord:array-empty-required"|
"opendiscord:array-too-short"|
"opendiscord:array-too-long"|
"opendiscord:array-length-invalid"|
"opendiscord:array-invalid-types"|
"opendiscord:array-double"|
"opendiscord:discord-invalid-id"|
"opendiscord:discord-invalid-id-options"|
"opendiscord:discord-invalid-token"|
"opendiscord:color-invalid"|
"opendiscord:emoji-too-short"|
"opendiscord:emoji-too-long"|
"opendiscord:emoji-custom"|
"opendiscord:emoji-invalid"|
"opendiscord:url-invalid"|
"opendiscord:url-invalid-http"|
"opendiscord:url-invalid-protocol"|
"opendiscord:url-invalid-hostname"|
"opendiscord:url-invalid-extension"|
"opendiscord:url-invalid-path"|
"opendiscord:id-not-unique"|
"opendiscord:id-non-existent"|
"opendiscord:invalid-language"|
"opendiscord:invalid-button"|
"opendiscord:unused-option"|
"opendiscord:unused-question"|
"opendiscord:dropdown-option"
)
/**## ODCheckerFunctionManagerIdMappings `type`
* A list of all available IDs in the default `ODCheckerFunctionManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODCheckerFunctionManagerIdMappings extends api.ODCheckerFunctionManagerIdConstraint {
"opendiscord:unused-options":api.ODCheckerFunction,
"opendiscord:unused-questions":api.ODCheckerFunction,
"opendiscord:dropdown-options":api.ODCheckerFunction
}
/**## ODMappedCheckerManager `class
* A special class with types for the Open Ticket `ODCheckerManager` class.
*/
export class ODMappedCheckerManager extends api.ODCheckerManager<ODCheckerManagerIdMappings,ODCheckerFunctionManagerIdMappings,api.ODDefaultCheckerRenderer,ODCheckerTranslationRegisterMessageIdMappings,ODCheckerTranslationRegisterOtherIdMappings> {}
/**## ODMappedCheckerFunctionManager `class
* A special class with types for the Open Ticket `ODCheckerFunctionManager` class.
*/
export class ODMappedCheckerFunctionManager extends api.ODCheckerFunctionManager<ODCheckerFunctionManagerIdMappings> {}
/**## ODMappedCheckerTranslationRegister `class
* A special class with types for the Open Ticket `ODCheckerTranslationRegister` class.
*/
export class ODMappedCheckerTranslationRegister extends api.ODCheckerTranslationRegister<ODCheckerTranslationRegisterMessageIdMappings,ODCheckerTranslationRegisterOtherIdMappings> {}
+109
View File
@@ -0,0 +1,109 @@
///////////////////////////////////////
//OPEN TICKET CLIENT MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW COMMANDS?
* - Register the command in loadAllSlashCommands() & loadAllTextCommands() in (./src/data/framework/commandLoader.ts)
* - Add autocomplete for the command in OD(Slash/Text)CommandManagerIds_Default in (./src/core/api/defaults/client.ts)
* - Add the command to the help menu in (./src/data/framework/helpMenuLoader.ts)
* - If required, new config variables should be added (incl. logs, dm-logs & permissions).
* - Update the Open Ticket Documentation.
* - If the command contains complex logic or can be executed from a button/dropdown, it should be placed inside an `ODAction`.
* - Check all files, test the bot carefully & try a lot of different scenario's with different settings.
*/
/**## ODSlashCommandManagerIdMappings `interface`
* A list of all available IDs in the default `ODSlashCommandManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODSlashCommandManagerIdMappings extends api.ODSlashCommandManagerIdConstraint {
"opendiscord:help":api.ODSlashCommand,
"opendiscord:panel":api.ODSlashCommand,
"opendiscord:ticket":api.ODSlashCommand,
"opendiscord:close":api.ODSlashCommand,
"opendiscord:delete":api.ODSlashCommand,
"opendiscord:reopen":api.ODSlashCommand,
"opendiscord:claim":api.ODSlashCommand,
"opendiscord:unclaim":api.ODSlashCommand,
"opendiscord:pin":api.ODSlashCommand,
"opendiscord:unpin":api.ODSlashCommand,
"opendiscord:move":api.ODSlashCommand,
"opendiscord:rename":api.ODSlashCommand,
"opendiscord:add":api.ODSlashCommand,
"opendiscord:remove":api.ODSlashCommand,
"opendiscord:blacklist":api.ODSlashCommand,
"opendiscord:stats":api.ODSlashCommand,
"opendiscord:clear":api.ODSlashCommand,
"opendiscord:autoclose":api.ODSlashCommand,
"opendiscord:autodelete":api.ODSlashCommand,
"opendiscord:topic":api.ODSlashCommand,
"opendiscord:priority":api.ODSlashCommand,
"opendiscord:transfer":api.ODSlashCommand,
}
/**## ODTextCommandManagerIdMappings `interface`
* A list of all available IDs in the default `ODTextCommandManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODTextCommandManagerIdMappings extends api.ODTextCommandManagerIdConstraint {
"opendiscord:dump":api.ODTextCommand,
"opendiscord:help":api.ODTextCommand,
"opendiscord:panel":api.ODTextCommand,
"opendiscord:close":api.ODTextCommand,
"opendiscord:delete":api.ODTextCommand,
"opendiscord:reopen":api.ODTextCommand,
"opendiscord:claim":api.ODTextCommand,
"opendiscord:unclaim":api.ODTextCommand,
"opendiscord:pin":api.ODTextCommand,
"opendiscord:unpin":api.ODTextCommand,
"opendiscord:move":api.ODTextCommand,
"opendiscord:rename":api.ODTextCommand,
"opendiscord:add":api.ODTextCommand,
"opendiscord:remove":api.ODTextCommand,
"opendiscord:blacklist-view":api.ODTextCommand,
"opendiscord:blacklist-add":api.ODTextCommand,
"opendiscord:blacklist-remove":api.ODTextCommand,
"opendiscord:blacklist-get":api.ODTextCommand,
"opendiscord:stats-global":api.ODTextCommand,
"opendiscord:stats-reset":api.ODTextCommand,
"opendiscord:stats-ticket":api.ODTextCommand,
"opendiscord:stats-user":api.ODTextCommand,
"opendiscord:clear":api.ODTextCommand,
"opendiscord:autoclose-disable":api.ODTextCommand,
"opendiscord:autoclose-enable":api.ODTextCommand,
"opendiscord:autodelete-disable":api.ODTextCommand,
"opendiscord:autodelete-enable":api.ODTextCommand,
"opendiscord:topic-set":api.ODTextCommand,
"opendiscord:priority-set":api.ODTextCommand,
"opendiscord:priority-get":api.ODTextCommand,
"opendiscord:transfer":api.ODTextCommand,
}
/**## ODContextMenuManagerIdMappings `interface`
* A list of all available IDs in the default `ODContextMenuManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODContextMenuManagerIdMappings extends api.ODContextMenuManagerIdConstraint {
//"opendiscord:test-menu":ODContextMenu
}
/**## ODMappedClientManager `class
* A special class with types for the Open Ticket `ODClientManager` class.
*/
export class ODMappedClientManager extends api.ODClientManager<ODSlashCommandManagerIdMappings,ODTextCommandManagerIdMappings,ODContextMenuManagerIdMappings> {}
/**## ODMappedSlashCommandManager `class
* A special class with types for the Open Ticket `ODSlashCommandManager` class.
*/
export class ODMappedSlashCommandManager extends api.ODSlashCommandManager<ODSlashCommandManagerIdMappings> {}
/**## ODMappedTextCommandManager `class
* A special class with types for the Open Ticket `ODTextCommandManager` class.
*/
export class ODMappedTextCommandManager extends api.ODTextCommandManager<ODTextCommandManagerIdMappings> {}
/**## ODMappedContextMenuManager `class
* A special class with types for the Open Ticket `ODContextMenuManager` class.
*/
export class ODMappedContextMenuManager extends api.ODContextMenuManager<ODContextMenuManagerIdMappings> {}
+32
View File
@@ -0,0 +1,32 @@
///////////////////////////////////////
//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,
}
/**## ODMappedCodeManager `class
* A special class with types for the Open Ticket `ODCodeManager` class.
*/
export class ODMappedCodeManager extends api.ODCodeManager<ODCodeManagerIdMappings> {}
@@ -1,9 +1,9 @@
/////////////////////////////////////// ///////////////////////////////////////
//DEFAULT CONFIG MODULE //OPEN TICKET CONFIG MAPPINGS
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
import * as discord from "discord.js" import * as discord from "discord.js"
import { ODRoleUpdateMode } from "../openticket/role" import { ODRoleUpdateMode } from "../api/role"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW CONFIG VARIABLES? /** (CONTRIBUTOR GUIDE) HOW TO ADD NEW CONFIG VARIABLES?
* - Make the change to the config file in (./config/) and be aware of the following things: * - Make the change to the config file in (./config/) and be aware of the following things:
@@ -25,51 +25,57 @@ import { ODRoleUpdateMode } from "../openticket/role"
* - Check (./src/builders), (./src/actions), (./src/data) & (./src/commands) in general in the areas that were changed. * - Check (./src/builders), (./src/actions), (./src/data) & (./src/commands) in general in the areas that were changed.
*/ */
/**## ODConfigManagerIds_Default `interface` /**## ODConfigManagerIdMappings `interface`
* This interface is a list of ids available in the `ODConfigManager_Default` class. * A list of all available IDs in the default `ODConfigManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODConfigManagerIds_Default { export interface ODConfigManagerIdMappings extends api.ODConfigManagerIdConstraint {
"opendiscord:general":ODJsonConfig_DefaultGeneral, "opendiscord:general":ODGeneralJsonConfig,
"opendiscord:questions":ODJsonConfig_DefaultQuestions, "opendiscord:questions":ODQuestionsJsonConfig,
"opendiscord:options":ODJsonConfig_DefaultOptions, "opendiscord:options":ODOptionsJsonConfig,
"opendiscord:panels":ODJsonConfig_DefaultPanels, "opendiscord:panels":ODPanelsJsonConfig,
"opendiscord:transcripts":ODJsonConfig_DefaultTranscripts "opendiscord:transcripts":ODTranscriptsJsonConfig
} }
/**## ODConfigManager_Default `default_class` /**## ODMappedConfigManager `class
* This is a special class that adds type definitions & typescript to the ODConfigManager class. * A special class with types for the Open Ticket `ODConfigManager` class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.configs`!
*/ */
export class ODConfigManager_Default extends api.ODConfigManager { export class ODMappedConfigManager extends api.ODConfigManager<ODConfigManagerIdMappings> {}
get<ConfigId extends keyof ODConfigManagerIds_Default>(id:ConfigId): ODConfigManagerIds_Default[ConfigId]
get(id:api.ODValidId): api.ODConfig|null
get(id:api.ODValidId): api.ODConfig|null { /**## ODGeneralJsonConfig `class
return super.get(id) * A special class with types for the Open Ticket `config/general.json` config file
} */
export class ODGeneralJsonConfig extends api.ODJsonConfig<ODGeneralJsonConfig_GeneralData> {}
remove<ConfigId extends keyof ODConfigManagerIds_Default>(id:ConfigId): ODConfigManagerIds_Default[ConfigId] /**## ODQuestionsJsonConfig `class
remove(id:api.ODValidId): api.ODConfig|null * A special class with types for the Open Ticket `config/questions.json` config file
*/
export class ODQuestionsJsonConfig extends api.ODJsonConfig<ODQuestionsJsonConfig_QuestionsData> {}
remove(id:api.ODValidId): api.ODConfig|null { /**## ODOptionsJsonConfig `class
return super.remove(id) * A special class with types for the Open Ticket `config/options.json` config file
} */
export class ODOptionsJsonConfig extends api.ODJsonConfig<ODOptionsJsonConfig_OptionsData> {}
exists(id:keyof ODConfigManagerIds_Default): boolean /**## ODPanelsJsonConfig `class
exists(id:api.ODValidId): boolean * A special class with types for the Open Ticket `config/panels.json` config file
*/
export class ODPanelsJsonConfig extends api.ODJsonConfig<ODPanelsJsonConfig_PanelsData> {}
exists(id:api.ODValidId): boolean { /**## ODTranscriptsJsonConfig `class
return super.exists(id) * A special class with types for the Open Ticket `config/transcripts.json` config file
} */
} export class ODTranscriptsJsonConfig extends api.ODJsonConfig<ODTranscriptsJsonConfig_TranscriptsData> {}
/**## ODJsonConfig_DefaultStatusType `interface` ///////////////////////////////////////
// CONFIG STRUCTURES, VALUES & TYPES
// --> general.json
///////////////////////////////////////
/**## ODGeneralJsonConfig_Status `interface`
* This interface is an object which has all properties for the status object in the `general.json` config! * This interface is an object which has all properties for the status object in the `general.json` config!
*/ */
export interface ODJsonConfig_DefaultStatusType { export interface ODGeneralJsonConfig_Status {
/**Is the status enabled? */ /**Is the status enabled? */
enabled:boolean, enabled:boolean,
/**The type of status (e.g. playing, listening, custom, ...) */ /**The type of status (e.g. playing, listening, custom, ...) */
@@ -82,25 +88,25 @@ export interface ODJsonConfig_DefaultStatusType {
state:string, state:string,
} }
/**## ODJsonConfig_DefaultMessageSettingsType `interface` /**## ODGeneralJsonConfig_MessageSettings `interface`
* This interface is an object which has all properties for the "system"."messages".... object in the `general.json` config! * This interface is an object which has all properties for the "system"."messages".... object in the `general.json` config!
*/ */
export interface ODJsonConfig_DefaultMessageSettingsType { export interface ODGeneralJsonConfig_MessageSettings {
/**Enable sending DM logs to the ticket creator for this action. */ /**Enable sending DM logs to the ticket creator for this action. */
dm:boolean, dm:boolean,
/**Enable sending logsto the log channel for this action. */ /**Enable sending logsto the log channel for this action. */
logs:boolean logs:boolean
} }
/**## ODJsonConfig_DefaultCmdPermissionSettingsType `type` /**## ODGeneralJsonConfig_CmdPermissionSettingsType `type`
* This type is a collection of command permission settings for the "system"."permissions".... object in the `general.json` config! * This type is a collection of command permission settings for the "system"."permissions".... object in the `general.json` config!
*/ */
export type ODJsonConfig_DefaultCmdPermissionSettingsType = "admin"|"everyone"|"none"|string export type ODGeneralJsonConfig_CmdPermissionSettingsType = "admin"|"everyone"|"none"|string
/**## ODJsonConfig_DefaultInfo `interface` /**## ODGeneralJsonConfig_Info `interface`
* This object contains a few URLs and metadata for the config. * This object contains a few URLs and metadata for the config.
*/ */
export interface ODJsonConfig_DefaultInfo { export interface ODGeneralJsonConfig_Info {
/**A link to the Open Ticket documentation. */ /**A link to the Open Ticket documentation. */
support:string, support:string,
/**A link to the DJdj Development discord server. */ /**A link to the DJdj Development discord server. */
@@ -109,20 +115,20 @@ export interface ODJsonConfig_DefaultInfo {
version:string version:string
} }
/**## ODJsonConfig_DefaultSystemLogs `interface` /**## ODGeneralJsonConfig_SystemLogs `interface`
* All settings related to the log channel. * All settings related to the log channel.
*/ */
export interface ODJsonConfig_DefaultSystemLogs { export interface ODGeneralJsonConfig_SystemLogs {
/**Enable logging. Individual actions should still be added via the `"system"."messages"..."logs"` */ /**Enable logging. Individual actions should still be added via the `"system"."messages"..."logs"` */
enabled:boolean, enabled:boolean,
/**The channel to send logs to. */ /**The channel to send logs to. */
channel:string channel:string
} }
/**## ODJsonConfig_DefaultSystemLimits `interface` /**## ODGeneralJsonConfig_SystemLimits `interface`
* All settings related to global ticket limits. * All settings related to global ticket limits.
*/ */
export interface ODJsonConfig_DefaultSystemLimits { export interface ODGeneralJsonConfig_SystemLimits {
/**Enable global ticket limits. */ /**Enable global ticket limits. */
enabled:boolean, enabled:boolean,
/**The maximum amount of tickets that are allowed in the server at the same time. */ /**The maximum amount of tickets that are allowed in the server at the same time. */
@@ -131,10 +137,10 @@ export interface ODJsonConfig_DefaultSystemLimits {
userMaximum:number userMaximum:number
} }
/**## ODJsonConfig_DefaultSystemChannelTopic `interface` /**## ODGeneralJsonConfig_SystemChannelTopic `interface`
* All global channel topic settings. * All global channel topic settings.
*/ */
export interface ODJsonConfig_DefaultSystemChannelTopic { export interface ODGeneralJsonConfig_SystemChannelTopic {
/**Show the option name in the channel topic. */ /**Show the option name in the channel topic. */
showOptionName:boolean, showOptionName:boolean,
/**Show the option description in the channel topic. */ /**Show the option description in the channel topic. */
@@ -155,59 +161,59 @@ export interface ODJsonConfig_DefaultSystemChannelTopic {
showParticipants:boolean showParticipants:boolean
} }
/**## ODJsonConfig_DefaultSystemPermissions `interface` /**## ODGeneralJsonConfig_SystemPermissions `interface`
* Configure permissions for all Open Ticket commands & actions. * Configure permissions for all Open Ticket commands & actions.
*/ */
export interface ODJsonConfig_DefaultSystemPermissions { export interface ODGeneralJsonConfig_SystemPermissions {
help:ODJsonConfig_DefaultCmdPermissionSettingsType, help:ODGeneralJsonConfig_CmdPermissionSettingsType,
panel:ODJsonConfig_DefaultCmdPermissionSettingsType, panel:ODGeneralJsonConfig_CmdPermissionSettingsType,
ticket:ODJsonConfig_DefaultCmdPermissionSettingsType, ticket:ODGeneralJsonConfig_CmdPermissionSettingsType,
close:ODJsonConfig_DefaultCmdPermissionSettingsType, close:ODGeneralJsonConfig_CmdPermissionSettingsType,
delete:ODJsonConfig_DefaultCmdPermissionSettingsType, delete:ODGeneralJsonConfig_CmdPermissionSettingsType,
reopen:ODJsonConfig_DefaultCmdPermissionSettingsType, reopen:ODGeneralJsonConfig_CmdPermissionSettingsType,
claim:ODJsonConfig_DefaultCmdPermissionSettingsType, claim:ODGeneralJsonConfig_CmdPermissionSettingsType,
unclaim:ODJsonConfig_DefaultCmdPermissionSettingsType, unclaim:ODGeneralJsonConfig_CmdPermissionSettingsType,
pin:ODJsonConfig_DefaultCmdPermissionSettingsType, pin:ODGeneralJsonConfig_CmdPermissionSettingsType,
unpin:ODJsonConfig_DefaultCmdPermissionSettingsType, unpin:ODGeneralJsonConfig_CmdPermissionSettingsType,
move:ODJsonConfig_DefaultCmdPermissionSettingsType, move:ODGeneralJsonConfig_CmdPermissionSettingsType,
rename:ODJsonConfig_DefaultCmdPermissionSettingsType, rename:ODGeneralJsonConfig_CmdPermissionSettingsType,
add:ODJsonConfig_DefaultCmdPermissionSettingsType, add:ODGeneralJsonConfig_CmdPermissionSettingsType,
remove:ODJsonConfig_DefaultCmdPermissionSettingsType, remove:ODGeneralJsonConfig_CmdPermissionSettingsType,
blacklist:ODJsonConfig_DefaultCmdPermissionSettingsType, blacklist:ODGeneralJsonConfig_CmdPermissionSettingsType,
stats:ODJsonConfig_DefaultCmdPermissionSettingsType, stats:ODGeneralJsonConfig_CmdPermissionSettingsType,
clear:ODJsonConfig_DefaultCmdPermissionSettingsType, clear:ODGeneralJsonConfig_CmdPermissionSettingsType,
autoclose:ODJsonConfig_DefaultCmdPermissionSettingsType, autoclose:ODGeneralJsonConfig_CmdPermissionSettingsType,
autodelete:ODJsonConfig_DefaultCmdPermissionSettingsType, autodelete:ODGeneralJsonConfig_CmdPermissionSettingsType,
transfer:ODJsonConfig_DefaultCmdPermissionSettingsType, transfer:ODGeneralJsonConfig_CmdPermissionSettingsType,
topic:ODJsonConfig_DefaultCmdPermissionSettingsType, topic:ODGeneralJsonConfig_CmdPermissionSettingsType,
priority:ODJsonConfig_DefaultCmdPermissionSettingsType, priority:ODGeneralJsonConfig_CmdPermissionSettingsType,
} }
/**## ODJsonConfig_DefaultSystemMessages `interface` /**## ODGeneralJsonConfig_SystemMessages `interface`
* Configure dm & log messages for all Open Ticket commands & actions. * Configure dm & log messages for all Open Ticket commands & actions.
*/ */
export interface ODJsonConfig_DefaultSystemMessages { export interface ODGeneralJsonConfig_SystemMessages {
creation:ODJsonConfig_DefaultMessageSettingsType, creation:ODGeneralJsonConfig_MessageSettings,
closing:ODJsonConfig_DefaultMessageSettingsType, closing:ODGeneralJsonConfig_MessageSettings,
deleting:ODJsonConfig_DefaultMessageSettingsType, deleting:ODGeneralJsonConfig_MessageSettings,
reopening:ODJsonConfig_DefaultMessageSettingsType, reopening:ODGeneralJsonConfig_MessageSettings,
claiming:ODJsonConfig_DefaultMessageSettingsType, claiming:ODGeneralJsonConfig_MessageSettings,
pinning:ODJsonConfig_DefaultMessageSettingsType, pinning:ODGeneralJsonConfig_MessageSettings,
adding:ODJsonConfig_DefaultMessageSettingsType, adding:ODGeneralJsonConfig_MessageSettings,
removing:ODJsonConfig_DefaultMessageSettingsType, removing:ODGeneralJsonConfig_MessageSettings,
renaming:ODJsonConfig_DefaultMessageSettingsType, renaming:ODGeneralJsonConfig_MessageSettings,
moving:ODJsonConfig_DefaultMessageSettingsType, moving:ODGeneralJsonConfig_MessageSettings,
blacklisting:ODJsonConfig_DefaultMessageSettingsType, blacklisting:ODGeneralJsonConfig_MessageSettings,
transferring:ODJsonConfig_DefaultMessageSettingsType, transferring:ODGeneralJsonConfig_MessageSettings,
topicChange:ODJsonConfig_DefaultMessageSettingsType, topicChange:ODGeneralJsonConfig_MessageSettings,
priorityChange:ODJsonConfig_DefaultMessageSettingsType, priorityChange:ODGeneralJsonConfig_MessageSettings,
reactionRole:ODJsonConfig_DefaultMessageSettingsType, reactionRole:ODGeneralJsonConfig_MessageSettings,
} }
/**## ODJsonConfig_DefaultSystem `interface` /**## ODGeneralJsonConfig_System `interface`
* All settings related to the ticket system. * All settings related to the ticket system.
*/ */
export interface ODJsonConfig_DefaultSystem { export interface ODGeneralJsonConfig_System {
/**Prefer slash-commands over text-commands when displaying them in menu's and messages. */ /**Prefer slash-commands over text-commands when displaying them in menu's and messages. */
preferSlashOverText:boolean, preferSlashOverText:boolean,
/**Reply with "unknown command" when the prefix is used without a valid command. */ /**Reply with "unknown command" when the prefix is used without a valid command. */
@@ -266,27 +272,27 @@ export interface ODJsonConfig_DefaultSystem {
enableDeleteWithoutTranscript:boolean, enableDeleteWithoutTranscript:boolean,
/**All settings related to the log channel. */ /**All settings related to the log channel. */
logs:ODJsonConfig_DefaultSystemLogs, logs:ODGeneralJsonConfig_SystemLogs,
/**All settings related to global ticket limits. */ /**All settings related to global ticket limits. */
limits:ODJsonConfig_DefaultSystemLimits, limits:ODGeneralJsonConfig_SystemLimits,
/**All global channel topic settings. */ /**All global channel topic settings. */
channelTopic:ODJsonConfig_DefaultSystemChannelTopic, channelTopic:ODGeneralJsonConfig_SystemChannelTopic,
/**Configure permissions for all Open Ticket commands & actions. */ /**Configure permissions for all Open Ticket commands & actions. */
permissions:ODJsonConfig_DefaultSystemPermissions, permissions:ODGeneralJsonConfig_SystemPermissions,
/**Configure dm & log messages for all Open Ticket commands & actions. */ /**Configure dm & log messages for all Open Ticket commands & actions. */
messages:ODJsonConfig_DefaultSystemMessages messages:ODGeneralJsonConfig_SystemMessages
} }
/**## ODJsonConfig_DefaultGeneralData `interface` /**## ODGeneralJsonConfig_GeneralData `interface`
* All contents of the `general.json` config file. * All contents of the `general.json` config file.
*/ */
export interface ODJsonConfig_DefaultGeneralData { export interface ODGeneralJsonConfig_GeneralData {
/**This object contains a few URLs and metadata for the config. */ /**This object contains a few URLs and metadata for the config. */
_INFO:ODJsonConfig_DefaultInfo, _INFO:ODGeneralJsonConfig_Info,
/**The token of the bot. (Empty when using `tokenFromENV`) */ /**The token of the bot. (Empty when using `tokenFromENV`) */
token:string, token:string,
@@ -310,26 +316,21 @@ export interface ODJsonConfig_DefaultGeneralData {
textCommands:boolean, textCommands:boolean,
/**All settings related to the status of the bot. */ /**All settings related to the status of the bot. */
status:ODJsonConfig_DefaultStatusType, status:ODGeneralJsonConfig_Status,
/**All settings related to the ticket system. */ /**All settings related to the ticket system. */
system:ODJsonConfig_DefaultSystem system:ODGeneralJsonConfig_System
} }
/**## ODJsonConfig_DefaultGeneral `default_class` ///////////////////////////////////////
* This is a special class that adds type definitions & typescript to the ODJsonConfig class. // CONFIG STRUCTURES, VALUES & TYPES
* It doesn't add any extra features! // --> options.json
* ///////////////////////////////////////
* This default class is made for the `general.json` config!
*/
export class ODJsonConfig_DefaultGeneral extends api.ODJsonConfig {
declare data: ODJsonConfig_DefaultGeneralData
}
/**## ODJsonConfig_DefaultOptionType `interface` /**## ODOptionsJsonConfig_BaseOption `interface`
* This interface is an object which has all basic properties for options in the `options.json` config! * This interface is an object which has all basic properties for options in the `options.json` config!
*/ */
export interface ODJsonConfig_DefaultOptionType { export interface ODOptionsJsonConfig_BaseOption {
/**The id of this option. */ /**The id of this option. */
id:string, id:string,
/**The name of this option. */ /**The name of this option. */
@@ -347,10 +348,10 @@ export interface ODJsonConfig_DefaultOptionType {
} }
} }
/**## ODJsonConfig_DefaultOptionButtonSettingsType `interface` /**## ODOptionsJsonConfig_OptionButtonSettings `interface`
* This interface is an object which has all button settings for ticket & reaction role options in the `options.json` config! * This interface is an object which has all button settings for ticket & reaction role options in the `options.json` config!
*/ */
export interface ODJsonConfig_DefaultOptionButtonSettingsType { export interface ODOptionsJsonConfig_OptionButtonSettings {
/**The emoji of the button. (can also be empty) */ /**The emoji of the button. (can also be empty) */
emoji:string, emoji:string,
/**The label of the button (can also be empty) */ /**The label of the button (can also be empty) */
@@ -359,10 +360,10 @@ export interface ODJsonConfig_DefaultOptionButtonSettingsType {
color:api.ODValidButtonColor color:api.ODValidButtonColor
} }
/**## ODJsonConfig_DefaultOptionEmbedSettingsType `interface` /**## ODOptionsJsonConfig_TicketOptionEmbedSettings `interface`
* This interface is an object which has all message embed settings for ticket options in the `options.json` config! * This interface is an object which has all message embed settings for ticket options in the `options.json` config!
*/ */
export interface ODJsonConfig_DefaultOptionEmbedSettingsType { export interface ODOptionsJsonConfig_TicketOptionEmbedSettings {
/**Is this embed enabled? */ /**Is this embed enabled? */
enabled:boolean, enabled:boolean,
/**The title of the embed. */ /**The title of the embed. */
@@ -388,10 +389,10 @@ export interface ODJsonConfig_DefaultOptionEmbedSettingsType {
timestamp:boolean timestamp:boolean
} }
/**## ODJsonConfig_DefaultOptionPingSettingsType `interface` /**## ODOptionsJsonConfig_TicketOptionPingSettings `interface`
* This interface is an object which has all message ping settings for ticket options in the `options.json` config! * This interface is an object which has all message ping settings for ticket options in the `options.json` config!
*/ */
export interface ODJsonConfig_DefaultOptionPingSettingsType { export interface ODOptionsJsonConfig_TicketOptionPingSettings {
/**Ping `@here`. */ /**Ping `@here`. */
"@here":boolean, "@here":boolean,
/**Ping `@everyone`. */ /**Ping `@everyone`. */
@@ -400,10 +401,10 @@ export interface ODJsonConfig_DefaultOptionPingSettingsType {
custom:string[] custom:string[]
} }
/**## ODJsonConfig_DefaultOptionTicketChannelType `interface` /**## ODOptionsJsonConfig_TicketOptionChannelSettings `interface`
* All settings related to the ticket channel itself in a ticket option. * All settings related to the ticket channel itself in a ticket option.
*/ */
export interface ODJsonConfig_DefaultOptionTicketChannelType { export interface ODOptionsJsonConfig_TicketOptionChannelSettings {
/**The prefix used in the name of this ticket channel. */ /**The prefix used in the name of this ticket channel. */
prefix:string, prefix:string,
/**The type of suffix used in the name of this ticket channel. */ /**The type of suffix used in the name of this ticket channel. */
@@ -425,12 +426,12 @@ export interface ODJsonConfig_DefaultOptionTicketChannelType {
topic:string topic:string
} }
/**## ODJsonConfig_DefaultOptionTicketType `interface` /**## ODOptionsJsonConfig_TicketOption `interface`
* This interface is an object which has all ticket properties for options in the `options.json` config! * This interface is an object which has all ticket properties for options in the `options.json` config!
*/ */
export interface ODJsonConfig_DefaultOptionTicketType extends ODJsonConfig_DefaultOptionType { export interface ODOptionsJsonConfig_TicketOption extends ODOptionsJsonConfig_BaseOption {
type:"ticket", type:"ticket",
button:ODJsonConfig_DefaultOptionButtonSettingsType, button:ODOptionsJsonConfig_OptionButtonSettings,
/**A list of discord role ids which are able to access this ticket type & use commands. */ /**A list of discord role ids which are able to access this ticket type & use commands. */
ticketAdmins:string[], ticketAdmins:string[],
/**A list of discord role ids which are able to access this ticket type but can't write in the chat. */ /**A list of discord role ids which are able to access this ticket type but can't write in the chat. */
@@ -440,7 +441,7 @@ export interface ODJsonConfig_DefaultOptionTicketType extends ODJsonConfig_Defau
/**A list of valid question ids from the `questions.json` config. */ /**A list of valid question ids from the `questions.json` config. */
questions:string[], questions:string[],
/**All settings related to the ticket channel itself. */ /**All settings related to the ticket channel itself. */
channel:ODJsonConfig_DefaultOptionTicketChannelType, channel:ODOptionsJsonConfig_TicketOptionChannelSettings,
/**All settings related to the message sent in DM to the creator when the ticket is created. */ /**All settings related to the message sent in DM to the creator when the ticket is created. */
dmMessage:{ dmMessage:{
/**Enable this message. */ /**Enable this message. */
@@ -448,7 +449,7 @@ export interface ODJsonConfig_DefaultOptionTicketType extends ODJsonConfig_Defau
/**The raw text contents of this message. (empty for embed only) */ /**The raw text contents of this message. (empty for embed only) */
text:string, text:string,
/**The embed of this message. */ /**The embed of this message. */
embed:ODJsonConfig_DefaultOptionEmbedSettingsType embed:ODOptionsJsonConfig_TicketOptionEmbedSettings
}, },
/**All settings related to the message sent in the ticket channel when the ticket is created. */ /**All settings related to the message sent in the ticket channel when the ticket is created. */
ticketMessage:{ ticketMessage:{
@@ -457,9 +458,9 @@ export interface ODJsonConfig_DefaultOptionTicketType extends ODJsonConfig_Defau
/**The raw text contents of this message. (empty for embed only) */ /**The raw text contents of this message. (empty for embed only) */
text:string, text:string,
/**The embed of this message. */ /**The embed of this message. */
embed:ODJsonConfig_DefaultOptionEmbedSettingsType, embed:ODOptionsJsonConfig_TicketOptionEmbedSettings,
/**Additional ping/mention settings for this ticket channel. */ /**Additional ping/mention settings for this ticket channel. */
ping:ODJsonConfig_DefaultOptionPingSettingsType ping:ODOptionsJsonConfig_TicketOptionPingSettings
}, },
/**All settings related to autoclosing this ticket type. */ /**All settings related to autoclosing this ticket type. */
autoclose:{ autoclose:{
@@ -508,21 +509,21 @@ export interface ODJsonConfig_DefaultOptionTicketType extends ODJsonConfig_Defau
} }
} }
/**## ODJsonConfig_DefaultOptionWebsiteType `interface` /**## ODOptionsJsonConfig_WebsiteOption `interface`
* This interface is an object which has all website properties for options in the `options.json` config! * This interface is an object which has all website properties for options in the `options.json` config!
*/ */
export interface ODJsonConfig_DefaultOptionWebsiteType extends ODJsonConfig_DefaultOptionType { export interface ODOptionsJsonConfig_WebsiteOption extends ODOptionsJsonConfig_BaseOption {
type:"website", type:"website",
/**The URL this button will point to. */ /**The URL this button will point to. */
url:string url:string
} }
/**## ODJsonConfig_DefaultOptionRoleType `interface` /**## ODOptionsJsonConfig_RoleOption `interface`
* This interface is an object which has all reaction role properties for options in the `options.json` config! * This interface is an object which has all reaction role properties for options in the `options.json` config!
*/ */
export interface ODJsonConfig_DefaultOptionRoleType extends ODJsonConfig_DefaultOptionType { export interface ODOptionsJsonConfig_RoleOption extends ODOptionsJsonConfig_BaseOption {
type:"role", type:"role",
button:ODJsonConfig_DefaultOptionButtonSettingsType, button:ODOptionsJsonConfig_OptionButtonSettings,
/**All roles which will be affected by this button. */ /**All roles which will be affected by this button. */
roles:string[], roles:string[],
/**The mode determines what will happen with the affected roles on the user. */ /**The mode determines what will happen with the affected roles on the user. */
@@ -533,25 +534,20 @@ export interface ODJsonConfig_DefaultOptionRoleType extends ODJsonConfig_Default
addOnMemberJoin:boolean addOnMemberJoin:boolean
} }
/**## ODJsonConfig_DefaultOptionsData `type` /**## ODOptionsJsonConfig_OptionsData `type`
* All contents of the `options.json` config file. * All contents of the `options.json` config file.
*/ */
export type ODJsonConfig_DefaultOptionsData = (ODJsonConfig_DefaultOptionTicketType|ODJsonConfig_DefaultOptionWebsiteType|ODJsonConfig_DefaultOptionRoleType)[] export type ODOptionsJsonConfig_OptionsData = (ODOptionsJsonConfig_TicketOption|ODOptionsJsonConfig_WebsiteOption|ODOptionsJsonConfig_RoleOption)[]
/**## ODJsonConfig_DefaultOptions `default_class` ///////////////////////////////////////
* This is a special class that adds type definitions & typescript to the ODJsonConfig class. // CONFIG STRUCTURES, VALUES & TYPES
* It doesn't add any extra features! // --> panels.json
* ///////////////////////////////////////
* This default class is made for the `options.json` config!
*/
export class ODJsonConfig_DefaultOptions extends api.ODJsonConfig {
declare data: ODJsonConfig_DefaultOptionsData
}
/**## ODJsonConfig_DefaultPanelEmbedSettingsType `interface` /**## ODPanelsJsonConfig_PanelEmbedSettings `interface`
* This interface is an object which has all message embed settings for panels in the `panels.json` config! * This interface is an object which has all message embed settings for panels in the `panels.json` config!
*/ */
export interface ODJsonConfig_DefaultPanelEmbedSettingsType { export interface ODPanelsJsonConfig_PanelEmbedSettings {
/**Is this embed enabled? */ /**Is this embed enabled? */
enabled:boolean, enabled:boolean,
/**The title of the embed. */ /**The title of the embed. */
@@ -583,10 +579,10 @@ export interface ODJsonConfig_DefaultPanelEmbedSettingsType {
timestamp:boolean timestamp:boolean
} }
/**## ODJsonConfig_DefaultPanelSettingsType `interface` /**## ODPanelsJsonConfig_PanelSettings `interface`
* This interface is a collection of additional settings for extra customisation in a panel. * This interface is a collection of additional settings for extra customisation in a panel.
*/ */
export interface ODJsonConfig_DefaultPanelSettingsType { export interface ODPanelsJsonConfig_PanelSettings {
/**The placeholder used in the dropdown when enabled. */ /**The placeholder used in the dropdown when enabled. */
dropdownPlaceholder:string, dropdownPlaceholder:string,
@@ -607,10 +603,10 @@ export interface ODJsonConfig_DefaultPanelSettingsType {
describeOptionsInEmbedDescription:boolean describeOptionsInEmbedDescription:boolean
} }
/**## ODJsonConfig_DefaultPanelType `interface` /**## ODPanelsJsonConfig_Panel `interface`
* This interface is an object which has all properties for panels in the `panels.json` config! * This interface is an object which has all properties for panels in the `panels.json` config!
*/ */
export interface ODJsonConfig_DefaultPanelType { export interface ODPanelsJsonConfig_Panel {
/**The id of this panel. */ /**The id of this panel. */
id:string, id:string,
/**The name of this panel. */ /**The name of this panel. */
@@ -623,30 +619,25 @@ export interface ODJsonConfig_DefaultPanelType {
/**The raw text contents of this panel. (empty for embed only) */ /**The raw text contents of this panel. (empty for embed only) */
text:string, text:string,
/**The embed of this panel. */ /**The embed of this panel. */
embed:ODJsonConfig_DefaultPanelEmbedSettingsType, embed:ODPanelsJsonConfig_PanelEmbedSettings,
/**A collection of additional settings for extra customisation in a panel. */ /**A collection of additional settings for extra customisation in a panel. */
settings:ODJsonConfig_DefaultPanelSettingsType settings:ODPanelsJsonConfig_PanelSettings
} }
/**## ODJsonConfig_DefaultPanelsData `type` /**## ODPanelsJsonConfig_PanelsData `type`
* All contents of the `panels.json` config file. * All contents of the `panels.json` config file.
*/ */
export type ODJsonConfig_DefaultPanelsData = ODJsonConfig_DefaultPanelType[] export type ODPanelsJsonConfig_PanelsData = ODPanelsJsonConfig_Panel[]
/**## ODJsonConfig_DefaultPanels `default_class` ///////////////////////////////////////
* This is a special class that adds type definitions & typescript to the ODJsonConfig class. // CONFIG STRUCTURES, VALUES & TYPES
* It doesn't add any extra features! // --> questions.json
* ///////////////////////////////////////
* This default class is made for the `panels.json` config!
*/
export class ODJsonConfig_DefaultPanels extends api.ODJsonConfig {
declare data: ODJsonConfig_DefaultPanelsData
}
/**## ODJSonConfig_DefaultQuestionLengthSettings `interface` /**## ODQuestionsJsonConfig_QuestionLengthSettings `interface`
* This interface is a collection of settings related to length validation in a question. * This interface is a collection of settings related to length validation in a question.
*/ */
export interface ODJSonConfig_DefaultQuestionLengthSettings { export interface ODQuestionsJsonConfig_QuestionLengthSettings {
/**Enable text length verification. */ /**Enable text length verification. */
enabled:boolean, enabled:boolean,
/**The minimum text input length. */ /**The minimum text input length. */
@@ -655,63 +646,54 @@ export interface ODJSonConfig_DefaultQuestionLengthSettings {
max:number max:number
} }
/**## ODJsonConfig_DefaultShortQuestionType `interface` /**## ODQuestionsJsonConfig_BaseQuestion `interface`
* This interface is an object which has all universal properties for questions in the `questions.json` config!
*/
export interface ODQuestionsJsonConfig_BaseQuestion {
/**The id of this question. */
id:string,
/**The name of this question. */
name:string,
/**The type of this question. */
type:"short"|"paragraph",
/**Is this question required? */
required:boolean,
}
/**## ODQuestionsJsonConfig_ShortQuestion `interface`
* This interface is an object which has all properties for short questions in the `questions.json` config! * This interface is an object which has all properties for short questions in the `questions.json` config!
*/ */
export interface ODJsonConfig_DefaultShortQuestionType { export interface ODQuestionsJsonConfig_ShortQuestion extends ODQuestionsJsonConfig_BaseQuestion {
/**The id of this question. */
id:string,
/**The name of this question. */
name:string,
/**The type of this question. */
type:"short",
/**Is this question required? */
required:boolean,
/**A placeholder for the question. */ /**A placeholder for the question. */
placeholder:string, placeholder:string,
/**A collection of settings related to length validation in a question. */ /**A collection of settings related to length validation in a question. */
length:ODJSonConfig_DefaultQuestionLengthSettings length:ODQuestionsJsonConfig_QuestionLengthSettings
} }
/**## ODJsonConfig_DefaultParagraphQuestionType `interface` /**## ODQuestionsJsonConfig_ParagraphQuestion `interface`
* This interface is an object which has all properties for paragraph questions in the `questions.json` config! * This interface is an object which has all properties for paragraph questions in the `questions.json` config!
*/ */
export interface ODJsonConfig_DefaultParagraphQuestionType { export interface ODQuestionsJsonConfig_ParagraphQuestion extends ODQuestionsJsonConfig_BaseQuestion {
/**The id of this question. */
id:string,
/**The name of this question. */
name:string,
/**The type of this question. */
type:"paragraph",
/**Is this question required? */
required:boolean,
/**A placeholder for the question. */ /**A placeholder for the question. */
placeholder:string, placeholder:string,
/**A collection of settings related to length validation in a question. */ /**A collection of settings related to length validation in a question. */
length:ODJSonConfig_DefaultQuestionLengthSettings length:ODQuestionsJsonConfig_QuestionLengthSettings
} }
/**## ODJsonConfig_DefaultQuestionsData `type` /**## ODQuestionsJsonConfig_QuestionsData `type`
* All contents of the `questions.json` config file. * All contents of the `questions.json` config file.
*/ */
export type ODJsonConfig_DefaultQuestionsData = (ODJsonConfig_DefaultShortQuestionType|ODJsonConfig_DefaultParagraphQuestionType)[] export type ODQuestionsJsonConfig_QuestionsData = (ODQuestionsJsonConfig_ShortQuestion|ODQuestionsJsonConfig_ParagraphQuestion)[]
/**## ODJsonConfig_DefaultQuestions `default_class` ///////////////////////////////////////
* This is a special class that adds type definitions & typescript to the ODJsonConfig class. // CONFIG STRUCTURES, VALUES & TYPES
* It doesn't add any extra features! // --> transcripts.json
* ///////////////////////////////////////
* This default class is made for the `questions.json` config!
*/
export class ODJsonConfig_DefaultQuestions extends api.ODJsonConfig {
declare data: ODJsonConfig_DefaultQuestionsData
}
/**## ODJsonConfig_DefaultTranscriptsTextLayout `interface` /**## ODTranscriptsJsonConfig_TranscriptsTextLayout `interface`
* This interface contains the layout of the text transcripts. * This interface contains the layout of the text transcripts.
*/ */
export interface ODJsonConfig_DefaultTranscriptsTextLayout { export interface ODTranscriptsJsonConfig_TranscriptsTextLayout {
/**The layout/complexity of the text transcripts. */ /**The layout/complexity of the text transcripts. */
layout:"simple"|"normal"|"detailed", layout:"simple"|"normal"|"detailed",
/**Include stats in the transcript. */ /**Include stats in the transcript. */
@@ -731,10 +713,10 @@ export interface ODJsonConfig_DefaultTranscriptsTextLayout {
customFileName:string customFileName:string
} }
/**## ODJsonConfig_DefaultTranscriptsHtmlLayout `interface` /**## ODTranscriptsJsonConfig_TranscriptsHtmlLayout `interface`
* This interface contains the layout of the HTML transcripts. * This interface contains the layout of the HTML transcripts.
*/ */
export interface ODJsonConfig_DefaultTranscriptsHtmlLayout { export interface ODTranscriptsJsonConfig_TranscriptsHtmlLayout {
/**Settings related to the background. */ /**Settings related to the background. */
background:{ background:{
/**Enable a custom background. */ /**Enable a custom background. */
@@ -779,10 +761,10 @@ export interface ODJsonConfig_DefaultTranscriptsHtmlLayout {
} }
} }
/**## ODJsonConfig_DefaultTranscriptsData `interface` /**## ODTranscriptsJsonConfig_TranscriptsData `interface`
* All contents of the `transcripts.json` config file. * All contents of the `transcripts.json` config file.
*/ */
export interface ODJsonConfig_DefaultTranscriptsData { export interface ODTranscriptsJsonConfig_TranscriptsData {
/**All general settings related to transcripts. */ /**All general settings related to transcripts. */
general:{ general:{
/**Are transcripts enabled? */ /**Are transcripts enabled? */
@@ -814,18 +796,7 @@ export interface ODJsonConfig_DefaultTranscriptsData {
includeTicketStats:boolean includeTicketStats:boolean
}, },
/**The layout of the text transcripts. */ /**The layout of the text transcripts. */
textTranscriptStyle:ODJsonConfig_DefaultTranscriptsTextLayout, textTranscriptStyle:ODTranscriptsJsonConfig_TranscriptsTextLayout,
/**The layout of the HTML transcripts. */ /**The layout of the HTML transcripts. */
htmlTranscriptStyle:ODJsonConfig_DefaultTranscriptsHtmlLayout htmlTranscriptStyle:ODTranscriptsJsonConfig_TranscriptsHtmlLayout
}
/**## ODJsonConfig_DefaultTranscripts `default_class`
* This is a special class that adds type definitions & typescript to the ODJsonConfig class.
* It doesn't add any extra features!
*
* This default class is made for the `transcripts.json` config!
*/
export class ODJsonConfig_DefaultTranscripts extends api.ODJsonConfig {
declare data: ODJsonConfig_DefaultTranscriptsData
} }
+17
View File
@@ -0,0 +1,17 @@
///////////////////////////////////////
//OPEN TICKET CONSOLE MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODLiveStatusManagerIdMappings `interface`
* A list of all available IDs in the default `ODLiveStatusManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODLiveStatusManagerIdMappings extends api.ODLiveStatusManagerIdConstraint {
"opendiscord:default-djdj-dev":api.ODLiveStatusUrlSource
}
/**## ODMappedLiveStatusManager `class
* A special class with types for the Open Ticket `ODLiveStatusManager` class.
*/
export class ODMappedLiveStatusManager extends api.ODLiveStatusManager<ODLiveStatusManagerIdMappings> {}
+17
View File
@@ -0,0 +1,17 @@
///////////////////////////////////////
//OPEN TICKET COOLDOWN MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODCooldownManagerIdMappings `interface`
* A list of all available IDs in the default `ODCooldownManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODCooldownManagerIdMappings extends api.ODCooldownManagerIdConstraint {
//"opendiscord:cooldown":api.ODCooldown
}
/**## ODMappedCooldownManager `class
* A special class with types for the Open Ticket `ODCooldownManager` class.
*/
export class ODMappedCooldownManager extends api.ODCooldownManager<ODCooldownManagerIdMappings> {}
+88
View File
@@ -0,0 +1,88 @@
///////////////////////////////////////
//OPEN TICKET DATABASE MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
import { ODTicketJson } from "../api/ticket"
import { ODOptionJson } from "../api/option"
/**## ODDatabaseManagerIdMappings `interface`
* A list of all available IDs in the default `ODDatabaseManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODDatabaseManagerIdMappings extends api.ODDatabaseManagerIdConstraint {
"opendiscord:global":ODGlobalDatabase,
"opendiscord:stats":ODStatsDatabase,
"opendiscord:tickets":ODTicketsDatabase,
"opendiscord:users":ODUsersDatabase,
"opendiscord:options":ODOptionsDatabase,
}
/**## ODMappedDatabaseManager `class
* A special class with types for the Open Ticket `ODDatabaseManager` class.
*/
export class ODMappedDatabaseManager extends api.ODDatabaseManager<ODDatabaseManagerIdMappings> {}
/**## ODGlobalDatabase `class
* A special class with types for the Open Ticket `database/global.json` database file
*/
export class ODGlobalDatabase extends api.ODFormattedJsonDatabase<ODGlobalDatabaseIdMappings> {}
/**## ODStatsDatabase `class
* A special class with types for the Open Ticket `database/stats.json` database file
*/
export class ODStatsDatabase extends api.ODFormattedJsonDatabase {}
/**## ODTicketsDatabase `class
* A special class with types for the Open Ticket `database/tickets.json` database file
*/
export class ODTicketsDatabase extends api.ODFormattedJsonDatabase<ODTicketsDatabaseIdMappings> {}
/**## ODUsersDatabase `class
* A special class with types for the Open Ticket `database/users.json` database file
*/
export class ODUsersDatabase extends api.ODFormattedJsonDatabase<ODUsersDatabaseIdMappings> {}
/**## ODOptionsDatabase `class
* A special class with types for the Open Ticket `database/options.json` database file
*/
export class ODOptionsDatabase extends api.ODFormattedJsonDatabase<ODOptionsDatabaseIdMappings> {}
/////////////////////////////////////////
// DATABASE MAPPINGS, CATEGORIES & TYPES
/////////////////////////////////////////
/**## ODGlobalDatabaseIdMappings `interface`
* A list of all available IDs in the default `ODGlobalDatabase` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODGlobalDatabaseIdMappings extends api.ODDatabaseIdConstraint {
"opendiscord:panel-message":string,
"opendiscord:panel-update":string,
"opendiscord:option-suffix-counter":number,
"opendiscord:option-suffix-history":string[],
"opendiscord:last-version":string
}
/**## ODTicketsDatabaseIdMappings `interface`
* A list of all available IDs in the default `ODTicketsDatabase` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODTicketsDatabaseIdMappings extends api.ODDatabaseIdConstraint {
"opendiscord:ticket":ODTicketJson
}
/**## ODUsersDatabaseIdMappings `interface`
* A list of all available IDs in the default `ODUsersDatabase` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODUsersDatabaseIdMappings extends api.ODDatabaseIdConstraint {
"opendiscord:blacklist":ODTicketJson
}
/**## ODOptionsDatabaseIdMappings `interface`
* A list of all available IDs in the default `ODOptionsDatabase` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODOptionsDatabaseIdMappings extends api.ODDatabaseIdConstraint {
"opendiscord:used-option":ODOptionJson
}
+339
View File
@@ -0,0 +1,339 @@
///////////////////////////////////////
//OPEN TICKET EVENT MAPPINGS
///////////////////////////////////////
//BASE MAPPINGSS
import * as api from "@open-discord-bots/framework/api"
import * as discord from "discord.js"
//OPEN TICKET MAPPINGS
import { ODMappedPluginClassManager, ODMappedPluginManager } from "./plugin"
import { ODMappedConfigManager} from "./config"
import { ODMappedDatabaseManager } from "./database"
import { ODMappedFlagManager } from "./flag"
import { ODMappedSessionManager } from "./session"
import { ODMappedLanguageManager } from "./language"
import { ODMappedCheckerFunctionManager, ODMappedCheckerManager, ODMappedCheckerTranslationRegister } from "./checker"
import { ODMappedClientManager, ODMappedContextMenuManager, ODMappedSlashCommandManager, ODMappedTextCommandManager } from "./client"
import { ODMappedBuilderManager, ODMappedButtonManager, ODMappedDropdownManager, ODMappedEmbedManager, ODMappedFileManager, ODMappedMessageManager, ODMappedModalManager } from "./builder"
import { ODMappedAutocompleteResponderManager, ODMappedButtonResponderManager, ODMappedCommandResponderManager, ODMappedContextMenuResponderManager, ODMappedDropdownResponderManager, ODMappedModalResponderManager, ODMappedResponderManager } from "./responder"
import { ODMappedActionManager } from "./action"
import { ODMappedPermissionManager } from "./permission"
import { ODMappedHelpMenuManager } from "./helpmenu"
import { ODMappedStatisticManager } from "./statistic"
import { ODMappedCodeManager } from "./code"
import { ODMappedCooldownManager } from "./cooldown"
import { ODMappedPostManager } from "./post"
import { ODMappedVerifyBarManager } from "./verifybar"
import { ODMappedStartScreenManager } from "./startscreen"
import { ODMappedLiveStatusManager } from "./console"
import { ODMappedProgressBarManager, ODMappedProgressBarRendererManager } from "./progressbar"
//OPEN TICKET MAPPINGSS
import { ODOptionManager, ODTicketOption } from "../api/option"
import { ODPanel, ODPanelManager } from "../api/panel"
import { ODTicket, ODTicketClearFilter, ODTicketManager } from "../api/ticket"
import { ODQuestionManager } from "../api/question"
import { ODBlacklistManager } from "../api/blacklist"
import { ODMappedTranscriptManager } from "../api/transcript"
import { ODRole, ODRoleManager } from "../api/role"
import { ODMappedPriorityManager, ODPriorityLevel } from "../api/priority"
/**## ODEventManagerIdMappings `interface`
* A list of all available IDs in the default `ODEventManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODEventManagerIdMappings extends api.ODEventManagerIdConstraint {
//error handling
"onErrorHandling": api.ODEvent<(error:Error, origin:NodeJS.UncaughtExceptionOrigin) => api.ODPromiseVoid>
"afterErrorHandling": api.ODEvent<(error:Error, origin:NodeJS.UncaughtExceptionOrigin, message:api.ODError) => api.ODPromiseVoid>
//plugins
"afterPluginsLoaded": api.ODEvent<(plugins:ODMappedPluginManager) => api.ODPromiseVoid>
"onPluginClassLoad": api.ODEvent<(classes:ODMappedPluginClassManager, plugins:ODMappedPluginManager) => api.ODPromiseVoid>
"afterPluginClassesLoaded": api.ODEvent<(classes:ODMappedPluginClassManager, plugins:ODMappedPluginManager) => api.ODPromiseVoid>
//flags
"onFlagLoad": api.ODEvent<(flags:ODMappedFlagManager) => api.ODPromiseVoid>
"afterFlagsLoaded": api.ODEvent<(flags:ODMappedFlagManager) => api.ODPromiseVoid>
"onFlagInit": api.ODEvent<(flags:ODMappedFlagManager) => api.ODPromiseVoid>
"afterFlagsInitiated": api.ODEvent<(flags:ODMappedFlagManager) => api.ODPromiseVoid>
//progress bars
"onProgressBarRendererLoad": api.ODEvent<(renderers:ODMappedProgressBarRendererManager) => api.ODPromiseVoid>
"afterProgressBarRenderersLoaded": api.ODEvent<(renderers:ODMappedProgressBarRendererManager) => api.ODPromiseVoid>
"onProgressBarLoad": api.ODEvent<(progressbars:ODMappedProgressBarManager) => api.ODPromiseVoid>
"afterProgressBarsLoaded": api.ODEvent<(progressbars:ODMappedProgressBarManager) => api.ODPromiseVoid>
//configs
"onConfigLoad": api.ODEvent<(configs:ODMappedConfigManager) => api.ODPromiseVoid>
"afterConfigsLoaded": api.ODEvent<(configs:ODMappedConfigManager) => api.ODPromiseVoid>
"onConfigInit": api.ODEvent<(configs:ODMappedConfigManager) => api.ODPromiseVoid>
"afterConfigsInitiated": api.ODEvent<(configs:ODMappedConfigManager) => api.ODPromiseVoid>
//databases
"onDatabaseLoad": api.ODEvent<(databases:ODMappedDatabaseManager) => api.ODPromiseVoid>
"afterDatabasesLoaded": api.ODEvent<(databases:ODMappedDatabaseManager) => api.ODPromiseVoid>
"onDatabaseInit": api.ODEvent<(databases:ODMappedDatabaseManager) => api.ODPromiseVoid>
"afterDatabasesInitiated": api.ODEvent<(databases:ODMappedDatabaseManager) => api.ODPromiseVoid>
//languages
"onLanguageLoad": api.ODEvent<(languages:ODMappedLanguageManager) => api.ODPromiseVoid>
"afterLanguagesLoaded": api.ODEvent<(languages:ODMappedLanguageManager) => api.ODPromiseVoid>
"onLanguageInit": api.ODEvent<(languages:ODMappedLanguageManager) => api.ODPromiseVoid>
"afterLanguagesInitiated": api.ODEvent<(languages:ODMappedLanguageManager) => api.ODPromiseVoid>
"onLanguageSelect": api.ODEvent<(languages:ODMappedLanguageManager) => api.ODPromiseVoid>
"afterLanguagesSelected": api.ODEvent<(main:api.ODLanguage|null, backup:api.ODLanguage|null, languages:ODMappedLanguageManager) => api.ODPromiseVoid>
//sessions
"onSessionLoad": api.ODEvent<(languages:ODMappedSessionManager) => api.ODPromiseVoid>
"afterSessionsLoaded": api.ODEvent<(languages:ODMappedSessionManager) => api.ODPromiseVoid>
//config checkers
"onCheckerLoad": api.ODEvent<(checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"afterCheckersLoaded": api.ODEvent<(checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"onCheckerFunctionLoad": api.ODEvent<(functions:ODMappedCheckerFunctionManager, checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"afterCheckerFunctionsLoaded": api.ODEvent<(functions:ODMappedCheckerFunctionManager, checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"onCheckerExecute": api.ODEvent<(checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"afterCheckersExecuted": api.ODEvent<(result:api.ODCheckerResult, checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"onCheckerTranslationLoad": api.ODEvent<(translations:ODMappedCheckerTranslationRegister, enabled:boolean, checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"afterCheckerTranslationsLoaded": api.ODEvent<(translations:ODMappedCheckerTranslationRegister, checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"onCheckerRender": api.ODEvent<(renderer:api.ODCheckerRenderer, checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"afterCheckersRendered": api.ODEvent<(renderer:api.ODCheckerRenderer, checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
"onCheckerQuit": api.ODEvent<(checkers:ODMappedCheckerManager) => api.ODPromiseVoid>
//plugin loading before client
"onPluginBeforeClientLoad": api.ODEvent<() => api.ODPromiseVoid>,
"afterPluginBeforeClientLoaded": api.ODEvent<() => api.ODPromiseVoid>,
//client configuration
"onClientLoad": api.ODEvent<(client:ODMappedClientManager) => api.ODPromiseVoid>
"afterClientLoaded": api.ODEvent<(client:ODMappedClientManager) => api.ODPromiseVoid>
"onClientInit": api.ODEvent<(client:ODMappedClientManager) => api.ODPromiseVoid>
"afterClientInitiated": api.ODEvent<(client:ODMappedClientManager) => api.ODPromiseVoid>
"onClientReady": api.ODEvent<(client:ODMappedClientManager) => api.ODPromiseVoid>
"afterClientReady": api.ODEvent<(client:ODMappedClientManager) => api.ODPromiseVoid>
"onClientActivityLoad": api.ODEvent<(activity:api.ODClientActivityManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"afterClientActivityLoaded": api.ODEvent<(activity:api.ODClientActivityManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"onClientActivityInit": api.ODEvent<(activity:api.ODClientActivityManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"afterClientActivityInitiated": api.ODEvent<(activity:api.ODClientActivityManager, client:ODMappedClientManager) => api.ODPromiseVoid>
//priority levels
"onPriorityLoad": api.ODEvent<(priorities:ODMappedPriorityManager) => api.ODPromiseVoid>
"afterPrioritiesLoaded": api.ODEvent<(priorities:ODMappedPriorityManager) => api.ODPromiseVoid>
//client slash commands
"onSlashCommandLoad": api.ODEvent<(slash:ODMappedSlashCommandManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"afterSlashCommandsLoaded": api.ODEvent<(slash:ODMappedSlashCommandManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"onSlashCommandRegister": api.ODEvent<(slash:ODMappedSlashCommandManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"afterSlashCommandsRegistered": api.ODEvent<(slash:ODMappedSlashCommandManager, client:ODMappedClientManager) => api.ODPromiseVoid>
//client context menus
"onContextMenuLoad": api.ODEvent<(menu:ODMappedContextMenuManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"afterContextMenusLoaded": api.ODEvent<(menu:ODMappedContextMenuManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"onContextMenuRegister": api.ODEvent<(menu:ODMappedContextMenuManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"afterContextMenusRegistered": api.ODEvent<(menu:ODMappedContextMenuManager, client:ODMappedClientManager) => api.ODPromiseVoid>
//client text commands
"onTextCommandLoad": api.ODEvent<(text:ODMappedTextCommandManager, client:ODMappedClientManager) => api.ODPromiseVoid>
"afterTextCommandsLoaded": api.ODEvent<(text:ODMappedTextCommandManager, client:ODMappedClientManager) => api.ODPromiseVoid>
//plugin loading before managers
"onPluginBeforeManagerLoad": api.ODEvent<() => api.ODPromiseVoid>,
"afterPluginBeforeManagerLoaded": api.ODEvent<() => api.ODPromiseVoid>,
//questions
"onQuestionLoad": api.ODEvent<(questions:ODQuestionManager) => api.ODPromiseVoid>
"afterQuestionsLoaded": api.ODEvent<(questions:ODQuestionManager) => api.ODPromiseVoid>
//options
"onOptionLoad": api.ODEvent<(options:ODOptionManager) => api.ODPromiseVoid>
"afterOptionsLoaded": api.ODEvent<(options:ODOptionManager) => api.ODPromiseVoid>
//panels
"onPanelLoad": api.ODEvent<(panels:ODPanelManager) => api.ODPromiseVoid>
"afterPanelsLoaded": api.ODEvent<(panels:ODPanelManager) => api.ODPromiseVoid>
"onPanelSpawn": api.ODEvent<(panel:ODPanel) => api.ODPromiseVoid>
"afterPanelSpawned": api.ODEvent<(panel:ODPanel) => api.ODPromiseVoid>
//tickets
"onTicketLoad": api.ODEvent<(tickets:ODTicketManager) => api.ODPromiseVoid>
"afterTicketsLoaded": api.ODEvent<(tickets:ODTicketManager) => api.ODPromiseVoid>
//ticket creation
"onTicketChannelCreation": api.ODEvent<(option:ODTicketOption, user:discord.User) => api.ODPromiseVoid>
"afterTicketChannelCreated": api.ODEvent<(option:ODTicketOption, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"onTicketChannelDeletion": api.ODEvent<(ticket:ODTicket, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"afterTicketChannelDeleted": api.ODEvent<(ticket:ODTicket, user:discord.User) => api.ODPromiseVoid>
"onTicketPermissionsCreated": api.ODEvent<(option:ODTicketOption, permissions:ODMappedPermissionManager, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"afterTicketPermissionsCreated": api.ODEvent<(option:ODTicketOption, permissions:ODMappedPermissionManager, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"onTicketMainMessageCreated": api.ODEvent<(ticket:ODTicket, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
"afterTicketMainMessageCreated": api.ODEvent<(ticket:ODTicket, message:discord.Message, channel:discord.GuildTextBasedChannel, user:discord.User) => api.ODPromiseVoid>
//ticket actions
"onTicketCreate": api.ODEvent<(creator:discord.User) => api.ODPromiseVoid>
"afterTicketCreated": api.ODEvent<(ticket:ODTicket, creator:discord.User, channel:discord.GuildTextBasedChannel) => api.ODPromiseVoid>
"onTicketClose": api.ODEvent<(ticket:ODTicket, closer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketClosed": api.ODEvent<(ticket:ODTicket, closer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketReopen": api.ODEvent<(ticket:ODTicket, reopener:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketReopened": api.ODEvent<(ticket:ODTicket, reopener:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketDelete": api.ODEvent<(ticket:ODTicket, deleter:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketDeleted": api.ODEvent<(ticket:ODTicket, deleter:discord.User, reason:string|null) => api.ODPromiseVoid>
"onTicketMove": api.ODEvent<(ticket:ODTicket, mover:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketMoved": api.ODEvent<(ticket:ODTicket, mover:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketClaim": api.ODEvent<(ticket:ODTicket, claimer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketClaimed": api.ODEvent<(ticket:ODTicket, claimer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketUnclaim": api.ODEvent<(ticket:ODTicket, unclaimer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketUnclaimed": api.ODEvent<(ticket:ODTicket, unclaimer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketPin": api.ODEvent<(ticket:ODTicket, pinner:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketPinned": api.ODEvent<(ticket:ODTicket, pinner:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketUnpin": api.ODEvent<(ticket:ODTicket, unpinner:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketUnpinned": api.ODEvent<(ticket:ODTicket, unpinner:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketUserAdd": api.ODEvent<(ticket:ODTicket, adder:discord.User, user:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketUserAdded": api.ODEvent<(ticket:ODTicket, adder:discord.User, user:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketUserRemove": api.ODEvent<(ticket:ODTicket, remover:discord.User, user:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketUserRemoved": api.ODEvent<(ticket:ODTicket, remover:discord.User, user:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketRename": api.ODEvent<(ticket:ODTicket, renamer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"afterTicketRenamed": api.ODEvent<(ticket:ODTicket, renamer:discord.User, channel:discord.GuildTextBasedChannel, reason:string|null) => api.ODPromiseVoid>
"onTicketsClear": api.ODEvent<(tickets:ODTicket[], clearer:discord.User, channel:discord.GuildTextBasedChannel, filter:ODTicketClearFilter) => api.ODPromiseVoid>
"afterTicketsCleared": api.ODEvent<(tickets:ODTicket[], clearer:discord.User, channel:discord.GuildTextBasedChannel, filter:ODTicketClearFilter) => api.ODPromiseVoid>
"onTicketTopicChange": api.ODEvent<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldTopic:string, newTopic:string) => api.ODPromiseVoid>
"afterTicketTopicChanged": api.ODEvent<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldTopic:string, newTopic:string) => api.ODPromiseVoid>
"onTicketPriorityChange": api.ODEvent<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldPriority:ODPriorityLevel, newPriority:ODPriorityLevel, reason:string|null) => api.ODPromiseVoid>
"afterTicketPriorityChanged": api.ODEvent<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldPriority:ODPriorityLevel, newPriority:ODPriorityLevel, reason:string|null) => api.ODPromiseVoid>
"onTicketTransfer": api.ODEvent<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldCreator:discord.User, newCreator:discord.User, reason:string|null) => api.ODPromiseVoid>
"afterTicketTransferred": api.ODEvent<(ticket:ODTicket, changer:discord.User, channel:discord.GuildTextBasedChannel, oldCreator:discord.User, newCreator:discord.User, reason:string|null) => api.ODPromiseVoid>
//roles
"onRoleLoad": api.ODEvent<(roles:ODRoleManager) => api.ODPromiseVoid>
"afterRolesLoaded": api.ODEvent<(roles:ODRoleManager) => api.ODPromiseVoid>
"onRoleUpdate": api.ODEvent<(user:discord.User,role:ODRole) => api.ODPromiseVoid>
"afterRolesUpdated": api.ODEvent<(user:discord.User,role:ODRole) => api.ODPromiseVoid>
//blacklist
"onBlacklistLoad": api.ODEvent<(blacklist:ODBlacklistManager) => api.ODPromiseVoid>
"afterBlacklistLoaded": api.ODEvent<(blacklist:ODBlacklistManager) => api.ODPromiseVoid>
//transcripts
"onTranscriptCompilerLoad": api.ODEvent<(transcripts:ODMappedTranscriptManager) => api.ODPromiseVoid>
"afterTranscriptCompilersLoaded": api.ODEvent<(transcripts:ODMappedTranscriptManager) => api.ODPromiseVoid>
"onTranscriptHistoryLoad": api.ODEvent<(transcripts:ODMappedTranscriptManager) => api.ODPromiseVoid>
"afterTranscriptHistoryLoaded": api.ODEvent<(transcripts:ODMappedTranscriptManager) => api.ODPromiseVoid>
//transcript creation
"onTranscriptCreate": api.ODEvent<(transcripts:ODMappedTranscriptManager,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"afterTranscriptCreated": api.ODEvent<(transcripts:ODMappedTranscriptManager,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"onTranscriptInit": api.ODEvent<(transcripts:ODMappedTranscriptManager,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"afterTranscriptInitiated": api.ODEvent<(transcripts:ODMappedTranscriptManager,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"onTranscriptCompile": api.ODEvent<(transcripts:ODMappedTranscriptManager,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"afterTranscriptCompiled": api.ODEvent<(transcripts:ODMappedTranscriptManager,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"onTranscriptReady": api.ODEvent<(transcripts:ODMappedTranscriptManager,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
"afterTranscriptReady": api.ODEvent<(transcripts:ODMappedTranscriptManager,ticket:ODTicket,channel:discord.TextChannel,user:discord.User) => api.ODPromiseVoid>
//plugin loading before builders
"onPluginBeforeBuilderLoad": api.ODEvent<() => api.ODPromiseVoid>,
"afterPluginBeforeBuilderLoaded": api.ODEvent<() => api.ODPromiseVoid>,
//builders
"onButtonBuilderLoad": api.ODEvent<(buttons:ODMappedButtonManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterButtonBuildersLoaded": api.ODEvent<(buttons:ODMappedButtonManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onDropdownBuilderLoad": api.ODEvent<(dropdowns:ODMappedDropdownManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterDropdownBuildersLoaded": api.ODEvent<(dropdowns:ODMappedDropdownManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onFileBuilderLoad": api.ODEvent<(files:ODMappedFileManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterFileBuildersLoaded": api.ODEvent<(files:ODMappedFileManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onEmbedBuilderLoad": api.ODEvent<(embeds:ODMappedEmbedManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterEmbedBuildersLoaded": api.ODEvent<(embeds:ODMappedEmbedManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onMessageBuilderLoad": api.ODEvent<(messages:ODMappedMessageManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterMessageBuildersLoaded": api.ODEvent<(messages:ODMappedMessageManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onModalBuilderLoad": api.ODEvent<(modals:ODMappedModalManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterModalBuildersLoaded": api.ODEvent<(modals:ODMappedModalManager, builders:ODMappedBuilderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
//plugin loading before responders
"onPluginBeforeResponderLoad": api.ODEvent<() => api.ODPromiseVoid>,
"afterPluginBeforeResponderLoaded": api.ODEvent<() => api.ODPromiseVoid>,
//responders
"onCommandResponderLoad": api.ODEvent<(commands:ODMappedCommandResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterCommandRespondersLoaded": api.ODEvent<(commands:ODMappedCommandResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onButtonResponderLoad": api.ODEvent<(buttons:ODMappedButtonResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterButtonRespondersLoaded": api.ODEvent<(buttons:ODMappedButtonResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onDropdownResponderLoad": api.ODEvent<(dropdowns:ODMappedDropdownResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterDropdownRespondersLoaded": api.ODEvent<(dropdowns:ODMappedDropdownResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onModalResponderLoad": api.ODEvent<(modals:ODMappedModalResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterModalRespondersLoaded": api.ODEvent<(modals:ODMappedModalResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onContextMenuResponderLoad": api.ODEvent<(menus:ODMappedContextMenuResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterContextMenuRespondersLoaded": api.ODEvent<(menus:ODMappedContextMenuResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"onAutocompleteResponderLoad": api.ODEvent<(autocomplete:ODMappedAutocompleteResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterAutocompleteRespondersLoaded": api.ODEvent<(autocomplete:ODMappedAutocompleteResponderManager, responders:ODMappedResponderManager, actions:ODMappedActionManager) => api.ODPromiseVoid>
//plugin loading before finalizations
"onPluginBeforeFinalizationLoad": api.ODEvent<() => api.ODPromiseVoid>,
"afterPluginBeforeFinalizationLoaded": api.ODEvent<() => api.ODPromiseVoid>,
//actions
"onActionLoad": api.ODEvent<(actions:ODMappedActionManager) => api.ODPromiseVoid>
"afterActionsLoaded": api.ODEvent<(actions:ODMappedActionManager) => api.ODPromiseVoid>
//verifybars
"onVerifyBarLoad": api.ODEvent<(verifybars:ODMappedVerifyBarManager) => api.ODPromiseVoid>
"afterVerifyBarsLoaded": api.ODEvent<(verifybars:ODMappedVerifyBarManager) => api.ODPromiseVoid>
//permissions
"onPermissionLoad": api.ODEvent<(permissions:ODMappedPermissionManager) => api.ODPromiseVoid>
"afterPermissionsLoaded": api.ODEvent<(permissions:ODMappedPermissionManager) => api.ODPromiseVoid>
//posts
"onPostLoad": api.ODEvent<(posts:ODMappedPostManager) => api.ODPromiseVoid>
"afterPostsLoaded": api.ODEvent<(posts:ODMappedPostManager) => api.ODPromiseVoid>
"onPostInit": api.ODEvent<(posts:ODMappedPostManager) => api.ODPromiseVoid>
"afterPostsInitiated": api.ODEvent<(posts:ODMappedPostManager) => api.ODPromiseVoid>
//cooldowns
"onCooldownLoad": api.ODEvent<(cooldowns:ODMappedCooldownManager) => api.ODPromiseVoid>
"afterCooldownsLoaded": api.ODEvent<(cooldowns:ODMappedCooldownManager) => api.ODPromiseVoid>
"onCooldownInit": api.ODEvent<(cooldowns:ODMappedCooldownManager) => api.ODPromiseVoid>
"afterCooldownsInitiated": api.ODEvent<(cooldowns:ODMappedCooldownManager) => api.ODPromiseVoid>
//help menu
"onHelpMenuCategoryLoad": api.ODEvent<(menu:ODMappedHelpMenuManager) => api.ODPromiseVoid>
"afterHelpMenuCategoriesLoaded": api.ODEvent<(menu:ODMappedHelpMenuManager) => api.ODPromiseVoid>
"onHelpMenuComponentLoad": api.ODEvent<(menu:ODMappedHelpMenuManager) => api.ODPromiseVoid>
"afterHelpMenuComponentsLoaded": api.ODEvent<(menu:ODMappedHelpMenuManager) => api.ODPromiseVoid>
//stats
"onStatisticScopeLoad": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid>
"afterStatisticScopesLoaded": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid>
"onStatisticLoad": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid>
"afterStatisticsLoaded": api.ODEvent<(stats:ODMappedStatisticManager) => api.ODPromiseVoid>
"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>,
//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>
//livestatus
"onLiveStatusSourceLoad": api.ODEvent<(livestatus:ODMappedLiveStatusManager) => api.ODPromiseVoid>
"afterLiveStatusSourcesLoaded": api.ODEvent<(livestatus:ODMappedLiveStatusManager) => api.ODPromiseVoid>
//startscreen
"onStartScreenLoad": api.ODEvent<(startscreen:ODMappedStartScreenManager) => api.ODPromiseVoid>
"afterStartScreensLoaded": api.ODEvent<(startscreen:ODMappedStartScreenManager) => api.ODPromiseVoid>
"onStartScreenRender": api.ODEvent<(startscreen:ODMappedStartScreenManager) => api.ODPromiseVoid>
"afterStartScreensRendered": api.ODEvent<(startscreen:ODMappedStartScreenManager) => api.ODPromiseVoid>
//ready
"beforeReadyForUsage": api.ODEvent<() => api.ODPromiseVoid>
"onReadyForUsage": api.ODEvent<() => api.ODPromiseVoid>
}
/**## ODMappedEventManager `class
* A special class with types for the Open Ticket `ODEventManager` class.
*/
export class ODMappedEventManager extends api.ODEventManager<ODEventManagerIdMappings> {}
+32
View File
@@ -0,0 +1,32 @@
///////////////////////////////////////
//OPEN TICKET PROCESS MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODFlagManagerIdMappings `interface`
* A list of all available IDs in the default `ODFlagManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODFlagManagerIdMappings extends api.ODFlagManagerIdConstraint {
"opendiscord:no-migration":api.ODFlag,
"opendiscord:dev-config":api.ODFlag,
"opendiscord:dev-database":api.ODFlag,
"opendiscord:debug":api.ODFlag,
"opendiscord:crash":api.ODFlag,
"opendiscord:no-transcripts":api.ODFlag,
"opendiscord:no-checker":api.ODFlag,
"opendiscord:checker":api.ODFlag,
"opendiscord:no-easter":api.ODFlag,
"opendiscord:no-plugins":api.ODFlag,
"opendiscord:soft-plugins":api.ODFlag,
"opendiscord:force-slash-update":api.ODFlag,
"opendiscord:no-compile":api.ODFlag,
"opendiscord:compile-only":api.ODFlag,
"opendiscord:silent":api.ODFlag,
"opendiscord:cli":api.ODFlag,
}
/**## ODMappedFlagManager `class
* A special class with types for the Open Ticket `ODFlagManager` class.
*/
export class ODMappedFlagManager extends api.ODFlagManager<ODFlagManagerIdMappings> {}
@@ -1,5 +1,5 @@
/////////////////////////////////////// ///////////////////////////////////////
//DEFAULT FUSE MODULE //OPEN TICKET FUSE MAPPINGS
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
+151
View File
@@ -0,0 +1,151 @@
///////////////////////////////////////
//OPEN TICKET HELP MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/** (CONTRIBUTOR GUIDE) HOW TO ADD NEW COMMANDS?
* - Register the command in loadAllSlashCommands() & loadAllTextCommands() in (./src/data/framework/commandLoader.ts)
* - Add autocomplete for the command in OD(Slash/Text)CommandManagerIds_Default in (./src/core/api/defaults/client.ts)
* - Add the command to the help menu in (./src/data/framework/helpMenuLoader.ts)
* - If required, new config variables should be added (incl. logs, dm-logs & permissions).
* - Update the Open Ticket Documentation.
* - If the command contains complex logic or can be executed from a button/dropdown, it should be placed inside an `ODAction`.
* - Check all files, test the bot carefully & try a lot of different scenario's with different settings.
*/
/**## ODHelpMenuManagerIdMappings `interface`
* A list of all available IDs in the default `ODHelpMenuManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODHelpMenuManagerIdMappings extends api.ODHelpMenuManagerIdConstraint {
"opendiscord:general":ODGeneralHelpMenuCategory,
"opendiscord:ticket-basic":ODBasicTicketHelpMenuCategory,
"opendiscord:ticket-advanced":ODAdvancedTicketHelpMenuCategory,
"opendiscord:ticket-user":ODUserTicketHelpMenuCategory,
"opendiscord:admin":ODAdminHelpMenuCategory,
"opendiscord:advanced":ODAdvancedHelpMenuCategory,
"opendiscord:extra":ODExtraHelpMenuCategory
}
/**## ODMappedHelpMenuManager `class
* A special class with types for the Open Ticket `ODHelpMenuManager` class.
*/
export class ODMappedHelpMenuManager extends api.ODHelpMenuManager<ODHelpMenuManagerIdMappings> {}
/**## ODGeneralHelpMenuCategory `class
* A special class with types for the Open Ticket `General Commands` help menu category.
*/
export class ODGeneralHelpMenuCategory extends api.ODHelpMenuCategory<ODGeneralHelpMenuCategoryIdMappings> {}
/**## ODBasicTicketHelpMenuCategory `class
* A special class with types for the Open Ticket `Basic Ticket Commands` help menu category.
*/
export class ODBasicTicketHelpMenuCategory extends api.ODHelpMenuCategory<ODBasicTicketHelpMenuCategoryIdMappings> {}
/**## ODAdvancedTicketHelpMenuCategory `class
* A special class with types for the Open Ticket `Advanced Ticket Commands` help menu category.
*/
export class ODAdvancedTicketHelpMenuCategory extends api.ODHelpMenuCategory<ODAdvancedTicketHelpMenuCategoryIdMappings> {}
/**## ODUserTicketHelpMenuCategory `class
* A special class with types for the Open Ticket `User ticket Commands` help menu category.
*/
export class ODUserTicketHelpMenuCategory extends api.ODHelpMenuCategory<ODUserTicketHelpMenuCategoryIdMappings> {}
/**## ODAdminHelpMenuCategory `class
* A special class with types for the Open Ticket `Admin Commands` help menu category.
*/
export class ODAdminHelpMenuCategory extends api.ODHelpMenuCategory<ODAdminHelpMenuCategoryIdMappings> {}
/**## ODAdvancedHelpMenuCategory `class
* A special class with types for the Open Ticket `Advanced Commands` help menu category.
*/
export class ODAdvancedHelpMenuCategory extends api.ODHelpMenuCategory<ODAdvancedHelpMenuCategoryIdMappings> {}
/**## ODExtraHelpMenuCategory `class
* A special class with types for the Open Ticket `Extra Commands` help menu category.
*/
export class ODExtraHelpMenuCategory extends api.ODHelpMenuCategory<ODExtraHelpMenuCategoryIdMappings> {}
/////////////////////////////////////////
// HELP MENU MAPPINGS, CATEGORIES & TYPES
/////////////////////////////////////////
/**## ODGeneralHelpMenuCategoryIdMappings `interface`
* A list of all available IDs in the default `ODGeneralHelpMenuCategory` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODGeneralHelpMenuCategoryIdMappings extends api.ODHelpMenuCategoryIdConstraint {
"opendiscord:help":api.ODHelpMenuCommandComponent,
"opendiscord:ticket":api.ODHelpMenuCommandComponent|null
}
/**## ODBasicTicketHelpMenuCategoryIdMappings `interface`
* A list of all available IDs in the default `ODBasicTicketHelpMenuCategory` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODBasicTicketHelpMenuCategoryIdMappings extends api.ODHelpMenuCategoryIdConstraint {
"opendiscord:close":api.ODHelpMenuCommandComponent,
"opendiscord:delete":api.ODHelpMenuCommandComponent,
"opendiscord:reopen":api.ODHelpMenuCommandComponent
}
/**## ODAdvancedTicketHelpMenuCategoryIdMappings `interface`
* A list of all available IDs in the default `ODAdvancedTicketHelpMenuCategory` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODAdvancedTicketHelpMenuCategoryIdMappings extends api.ODHelpMenuCategoryIdConstraint {
"opendiscord:pin":api.ODHelpMenuCommandComponent,
"opendiscord:unpin":api.ODHelpMenuCommandComponent,
"opendiscord:move":api.ODHelpMenuCommandComponent,
"opendiscord:rename":api.ODHelpMenuCommandComponent
}
/**## ODUserTicketHelpMenuCategoryIdMappings `interface`
* A list of all available IDs in the default `ODUserTicketHelpMenuCategory` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODUserTicketHelpMenuCategoryIdMappings extends api.ODHelpMenuCategoryIdConstraint {
"opendiscord:claim":api.ODHelpMenuCommandComponent,
"opendiscord:unclaim":api.ODHelpMenuCommandComponent,
"opendiscord:add":api.ODHelpMenuCommandComponent,
"opendiscord:remove":api.ODHelpMenuCommandComponent,
"opendiscord:transfer":api.ODHelpMenuCommandComponent,
}
/**## ODAdminHelpMenuCategoryIdMappings `interface`
* A list of all available IDs in the default `ODAdminHelpMenuCategory` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODAdminHelpMenuCategoryIdMappings extends api.ODHelpMenuCategoryIdConstraint {
"opendiscord:panel":api.ODHelpMenuCommandComponent,
"opendiscord:blacklist-view":api.ODHelpMenuCommandComponent,
"opendiscord:blacklist-add":api.ODHelpMenuCommandComponent,
"opendiscord:blacklist-remove":api.ODHelpMenuCommandComponent,
"opendiscord:blacklist-get":api.ODHelpMenuCommandComponent
}
/**## ODAdvancedHelpMenuCategoryIdMappings `interface`
* A list of all available IDs in the default `ODAdvancedHelpMenuCategory` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODAdvancedHelpMenuCategoryIdMappings extends api.ODHelpMenuCategoryIdConstraint {
"opendiscord:stats-global":api.ODHelpMenuCommandComponent,
"opendiscord:stats-reset":api.ODHelpMenuCommandComponent,
"opendiscord:stats-ticket":api.ODHelpMenuCommandComponent,
"opendiscord:stats-user":api.ODHelpMenuCommandComponent,
"opendiscord:autoclose-disable":api.ODHelpMenuCommandComponent,
"opendiscord:autoclose-enable":api.ODHelpMenuCommandComponent,
"opendiscord:autodelete-disable":api.ODHelpMenuCommandComponent,
"opendiscord:autodelete-enable":api.ODHelpMenuCommandComponent,
"opendiscord:topic-set":api.ODHelpMenuCommandComponent,
"opendiscord:priority-set":api.ODHelpMenuCommandComponent,
}
/**## ODExtraHelpMenuCategoryIdMappings `interface`
* A list of all available IDs in the default `ODExtraHelpMenuCategory` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODExtraHelpMenuCategoryIdMappings extends api.ODHelpMenuCategoryIdConstraint {
//"opendiscord:help-component":api.ODHelpMenuCommandComponent
}
@@ -1,5 +1,5 @@
/////////////////////////////////////// ///////////////////////////////////////
//DEFAULT LANGUAGE MODULE //OPEN TICKET LANGUAGE MAPPINGS
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
@@ -12,11 +12,11 @@ import * as api from "@open-discord-bots/framework/api"
* - Update the Open Ticket Documentation. * - Update the Open Ticket Documentation.
*/ */
/**## ODLanguageManagerIds_Default `interface` /**## ODLanguageManagerIdMappings `interface`
* This interface is a list of ids available in the `ODLanguageManager_Default` class. * A list of all available IDs in the default `ODLanguageManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODLanguageManagerIds_Default { export interface ODLanguageManagerIdMappings extends api.ODLanguageManagerIdConstraint {
"opendiscord:custom":api.ODLanguage, "opendiscord:custom":api.ODLanguage,
"opendiscord:english":api.ODLanguage, "opendiscord:english":api.ODLanguage,
"opendiscord:dutch":api.ODLanguage, "opendiscord:dutch":api.ODLanguage,
@@ -58,11 +58,11 @@ export interface ODLanguageManagerIds_Default {
//ADD NEW LANGUAGES HERE!!! //ADD NEW LANGUAGES HERE!!!
} }
/**## ODLanguageManagerTranslations_Default `type` /**## ODLanguageManagerTranslationIdMappings `type`
* This interface is a list of ids available in the `ODLanguageManager_Default` class. * A list of all available translation IDs in the default `ODLanguageManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export type ODLanguageManagerTranslations_Default = ( export type ODLanguageManagerTranslationIdMappings = (
"checker.system.headerOpenTicket"| "checker.system.headerOpenTicket"|
"checker.system.typeError"| "checker.system.typeError"|
"checker.system.typeWarning"| "checker.system.typeWarning"|
@@ -622,59 +622,7 @@ export type ODLanguageManagerTranslations_Default = (
"priorities.none" "priorities.none"
) )
/**## ODLanguageManager_Default `default_class` /**## ODMappedLanguageManager `class
* This is a special class that adds type definitions & typescript to the ODLanguageManager class. * A special class with types for the Open Ticket `ODLanguageManager` class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.languages`!
*/ */
export class ODLanguageManager_Default extends api.ODLanguageManager { export class ODMappedLanguageManager extends api.ODLanguageManager<ODLanguageManagerIdMappings,ODLanguageManagerTranslationIdMappings> {}
get<LanguageId extends keyof ODLanguageManagerIds_Default>(id:LanguageId): ODLanguageManagerIds_Default[LanguageId]
get(id:api.ODValidId): api.ODLanguage|null
get(id:api.ODValidId): api.ODLanguage|null {
return super.get(id)
}
remove<LanguageId extends keyof ODLanguageManagerIds_Default>(id:LanguageId): ODLanguageManagerIds_Default[LanguageId]
remove(id:api.ODValidId): api.ODLanguage|null
remove(id:api.ODValidId): api.ODLanguage|null {
return super.remove(id)
}
exists(id:keyof ODLanguageManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
getTranslation(id:ODLanguageManagerTranslations_Default): string
getTranslation(id:string): string|null
getTranslation(id:string): string|null {
return super.getTranslation(id)
}
setCurrentLanguage(id:keyof ODLanguageManagerIds_Default): void
setCurrentLanguage(id:api.ODValidId): void
setCurrentLanguage(id:api.ODValidId): void {
return super.setCurrentLanguage(id)
}
setBackupLanguage(id:keyof ODLanguageManagerIds_Default): void
setBackupLanguage(id:api.ODValidId): void
setBackupLanguage(id:api.ODValidId): void {
return super.setBackupLanguage(id)
}
getTranslationWithParams(id:ODLanguageManagerTranslations_Default, params:string[]): string
getTranslationWithParams(id:string, params:string[]): string|null
getTranslationWithParams(id:string, params:string[]): string|null {
return super.getTranslationWithParams(id,params)
}
}
+30
View File
@@ -0,0 +1,30 @@
///////////////////////////////////////
//OPEN TICKET PERMISSION MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODPermissionManagerIdMappings `interface`
* A list of all available IDs in the default `ODPermissionManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODPermissionManagerIdMappings extends api.ODPermissionManagerIdConstraint {
//"opendiscord:test-permission":api.ODPermission
}
/**## ODMappedPermissionManager `class
* A special class with types for the Open Ticket `ODPermissionManager` class.
*/
export class ODMappedPermissionManager extends api.ODPermissionManager<ODPermissionManagerIdMappings> {}
/**## ODPermissionEmbedType `type`
* A collection of all types available in the `opendiscord:no-permissions` embed.
*/
export type ODPermissionEmbedType = (
"developer"|
"owner"|
"admin"|
"moderator"|
"support"|
"member"|
"discord-administrator"
)
+30
View File
@@ -0,0 +1,30 @@
///////////////////////////////////////
//OPEN TICKET POST MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODPluginManagerIdMappings `interface`
* A list of all available IDs in the default `ODPluginManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODPluginManagerIdMappings extends api.ODPluginManagerIdConstraint {
//"opendiscord:example-plugin":api.ODPlugin
}
/**## ODPluginClassManagerIdMappings `interface`
* A list of all available IDs in the default `ODPluginClassManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODPluginClassManagerIdMappings extends api.ODPluginClassManagerIdConstraint {
//"opendiscord:example-plugin":any
}
/**## ODMappedPluginManager `class
* A special class with types for the Open Ticket `ODPluginManager` class.
*/
export class ODMappedPluginManager extends api.ODPluginManager<ODPluginManagerIdMappings> {}
/**## ODMappedPluginClassManager `class
* A special class with types for the Open Ticket `ODPluginClassManager` class.
*/
export class ODMappedPluginClassManager extends api.ODPluginClassManager<ODPluginClassManagerIdMappings> {}
+19
View File
@@ -0,0 +1,19 @@
///////////////////////////////////////
//OPEN TICKET POST MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
import * as discord from "discord.js"
/**## ODPostManagerIdMappings `interface`
* A list of all available IDs in the default `ODPostManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODPostManagerIdMappings extends api.ODPostManagerIdConstraint {
"opendiscord:logs":api.ODPost<discord.GuildTextBasedChannel>|null,
"opendiscord:transcripts":api.ODPost<discord.GuildTextBasedChannel>|null
}
/**## ODMappedPostManager `class
* A special class with types for the Open Ticket `ODPostManager` class.
*/
export class ODMappedPostManager extends api.ODPostManager<ODPostManagerIdMappings> {}
+40
View File
@@ -0,0 +1,40 @@
///////////////////////////////////////
//OPEN TICKET PROGRESS BAR MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODProgressBarManagerIdMappings `interface`
* A list of all available IDs in the default `ODProgressBarManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODProgressBarManagerIdMappings extends api.ODProgressBarManagerIdConstraint {
"opendiscord:slash-command-remove":api.ODManualProgressBar,
"opendiscord:slash-command-create":api.ODManualProgressBar,
"opendiscord:slash-command-update":api.ODManualProgressBar,
"opendiscord:context-menu-remove":api.ODManualProgressBar,
"opendiscord:context-menu-create":api.ODManualProgressBar,
"opendiscord:context-menu-update":api.ODManualProgressBar,
}
/**## ODProgressBarRendererManagerIdMappings `interface`
* A list of all available IDs in the default `ODProgressBarRendererManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODProgressBarRendererManagerIdMappings extends api.ODProgressBarRendererManagerIdConstraint {
"opendiscord:value-renderer":api.ODDefaultProgressBarRenderer,
"opendiscord:fraction-renderer":api.ODDefaultProgressBarRenderer,
"opendiscord:percentage-renderer":api.ODDefaultProgressBarRenderer,
"opendiscord:time-ms-renderer":api.ODDefaultProgressBarRenderer,
"opendiscord:time-sec-renderer":api.ODDefaultProgressBarRenderer,
"opendiscord:time-min-renderer":api.ODDefaultProgressBarRenderer,
}
/**## ODMappedProgressBarManager `class
* A special class with types for the Open Ticket `ODProgressBarManager` class.
*/
export class ODMappedProgressBarManager extends api.ODProgressBarManager<ODProgressBarManagerIdMappings,ODProgressBarRendererManagerIdMappings> {}
/**## ODMappedProgressBarRendererManager `class
* A special class with types for the Open Ticket `ODProgressBarRendererManager` class.
*/
export class ODMappedProgressBarRendererManager extends api.ODProgressBarRendererManager<ODProgressBarRendererManagerIdMappings> {}
+139
View File
@@ -0,0 +1,139 @@
///////////////////////////////////////
//OPEN TICKET RESPONDER MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODCommandResponderManagerIdMappings `interface`
* A list of all available IDs in the default `ODCommandResponderManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODCommandResponderManagerIdMappings extends api.ODCommandResponderManagerIdConstraint {
"opendiscord:help":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:help"|"opendiscord:logs"},
"opendiscord:stats":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:stats"|"opendiscord:logs"},
"opendiscord:panel":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:panel"|"opendiscord:logs"},
"opendiscord:ticket":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:ticket"|"opendiscord:logs"},
"opendiscord:blacklist":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:blacklist"|"opendiscord:discord-logs"|"opendiscord:logs"},
"opendiscord:close":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:close"|"opendiscord:logs"},
"opendiscord:reopen":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:reopen"|"opendiscord:logs"},
"opendiscord:delete":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:delete"|"opendiscord:logs"},
"opendiscord:claim":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:claim"|"opendiscord:logs"},
"opendiscord:unclaim":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:unclaim"|"opendiscord:logs"},
"opendiscord:pin":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:pin"|"opendiscord:logs"},
"opendiscord:unpin":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:unpin"|"opendiscord:logs"},
"opendiscord:rename":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:rename"|"opendiscord:logs"},
"opendiscord:move":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:move"|"opendiscord:logs"},
"opendiscord:add":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:add"|"opendiscord:logs"},
"opendiscord:remove":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:remove"|"opendiscord:logs"},
"opendiscord:clear":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:clear"|"opendiscord:logs"},
"opendiscord:topic":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:topic"|"opendiscord:logs"},
"opendiscord:priority":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:priority"|"opendiscord:logs"},
"opendiscord:transfer":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:transfer"|"opendiscord:logs"},
"opendiscord:autoclose":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:autoclose"|"opendiscord:logs"},
"opendiscord:autodelete":{source:"slash"|"text",params:{},workers:"opendiscord:permissions"|"opendiscord:autodelete"|"opendiscord:logs"},
}
/**## ODButtonResponderManagerIdMappings `interface`
* A list of all available IDs in the default `ODButtonResponderManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODButtonResponderManagerIdMappings extends api.ODButtonResponderManagerIdConstraint {
"opendiscord:verifybar-success":{source:"button",params:{},workers:"opendiscord:handle-verifybar"},
"opendiscord:verifybar-failure":{source:"button",params:{},workers:"opendiscord:handle-verifybar"},
"opendiscord:help-menu-switch":{source:"button",params:{},workers:"opendiscord:update-help-menu"},
"opendiscord:help-menu-previous":{source:"button",params:{},workers:"opendiscord:update-help-menu"},
"opendiscord:help-menu-next":{source:"button",params:{},workers:"opendiscord:update-help-menu"},
"opendiscord:ticket-option":{source:"button",params:{},workers:"opendiscord:ticket-option"},
"opendiscord:role-option":{source:"button",params:{},workers:"opendiscord:role-option"},
"opendiscord:claim-ticket":{source:"button",params:{},workers:"opendiscord:claim-ticket"},
"opendiscord:unclaim-ticket":{source:"button",params:{},workers:"opendiscord:unclaim-ticket"},
"opendiscord:pin-ticket":{source:"button",params:{},workers:"opendiscord:pin-ticket"},
"opendiscord:unpin-ticket":{source:"button",params:{},workers:"opendiscord:unpin-ticket"},
"opendiscord:close-ticket":{source:"button",params:{},workers:"opendiscord:close-ticket"},
"opendiscord:reopen-ticket":{source:"button",params:{},workers:"opendiscord:reopen-ticket"},
"opendiscord:delete-ticket":{source:"button",params:{},workers:"opendiscord:delete-ticket"},
"opendiscord:transcript-error-retry":{source:"button",params:{},workers:"opendiscord:permissions"|"opendiscord:delete-ticket"|"opendiscord:logs"},
"opendiscord:transcript-error-continue":{source:"button",params:{},workers:"opendiscord:permissions"|"opendiscord:delete-ticket"|"opendiscord:logs"},
"opendiscord:clear-continue":{source:"button",params:{},workers:"opendiscord:clear-continue"},
}
/**## ODDropdownResponderManagerIdMappings `interface`
* A list of all available IDs in the default `ODDropdownResponderManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODDropdownResponderManagerIdMappings extends api.ODDropdownResponderManagerIdConstraint {
"opendiscord:panel-dropdown-tickets":{source:"dropdown",params:{},workers:"opendiscord:panel-dropdown-tickets"},
}
/**## ODModalResponderManagerIdMappings `interface`
* A list of all available IDs in the default `ODModalResponderManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODModalResponderManagerIdMappings extends api.ODModalResponderManagerIdConstraint {
"opendiscord:ticket-questions":{source:"modal",params:{},workers:"opendiscord:ticket-questions"},
"opendiscord:close-ticket-reason":{source:"modal",params:{},workers:"opendiscord:close-ticket-reason"},
"opendiscord:reopen-ticket-reason":{source:"modal",params:{},workers:"opendiscord:reopen-ticket-reason"},
"opendiscord:delete-ticket-reason":{source:"modal",params:{},workers:"opendiscord:delete-ticket-reason"},
"opendiscord:claim-ticket-reason":{source:"modal",params:{},workers:"opendiscord:claim-ticket-reason"},
"opendiscord:unclaim-ticket-reason":{source:"modal",params:{},workers:"opendiscord:unclaim-ticket-reason"},
"opendiscord:pin-ticket-reason":{source:"modal",params:{},workers:"opendiscord:pin-ticket-reason"},
"opendiscord:unpin-ticket-reason":{source:"modal",params:{},workers:"opendiscord:unpin-ticket-reason"},
}
/**## ODContextMenuResponderManagerIdMappings `interface`
* A list of all available IDs in the default `ODContextMenuResponderManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODContextMenuResponderManagerIdMappings extends api.ODContextMenuResponderManagerIdConstraint {
//"opendiscord:example":{source:"context-menu",params:{},workers:"opendiscord:example"},
}
/**## ODAutocompleteResponderManagerIdMappings `interface`
* A list of all available IDs in the default `ODAutocompleteResponderManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODAutocompleteResponderManagerIdMappings extends api.ODAutocompleteResponderManagerIdConstraint {
"opendiscord:panel-id":{source:"autocomplete",params:{},workers:"opendiscord:panel-id"},
"opendiscord:option-id":{source:"autocomplete",params:{},workers:"opendiscord:option-id"}
}
/**## ODMappedCommandResponderManager `class
* A special class with types for the Open Ticket `ODCommandResponderManager` class.
*/
export class ODMappedCommandResponderManager extends api.ODCommandResponderManager<ODCommandResponderManagerIdMappings> {}
/**## ODMappedButtonResponderManager `class
* A special class with types for the Open Ticket `ODButtonResponderManager` class.
*/
export class ODMappedButtonResponderManager extends api.ODButtonResponderManager<ODButtonResponderManagerIdMappings> {}
/**## ODMappedDropdownResponderManager `class
* A special class with types for the Open Ticket `ODDropdownResponderManager` class.
*/
export class ODMappedDropdownResponderManager extends api.ODDropdownResponderManager<ODDropdownResponderManagerIdMappings> {}
/**## ODMappedModalResponderManager `class
* A special class with types for the Open Ticket `ODModalResponderManager` class.
*/
export class ODMappedModalResponderManager extends api.ODModalResponderManager<ODModalResponderManagerIdMappings> {}
/**## ODMappedContextMenuResponderManager `class
* A special class with types for the Open Ticket `ODContextMenuResponderManager` class.
*/
export class ODMappedContextMenuResponderManager extends api.ODContextMenuResponderManager<ODContextMenuResponderManagerIdMappings> {}
/**## ODMappedAutocompleteResponderManager `class
* A special class with types for the Open Ticket `ODAutocompleteResponderManager` class.
*/
export class ODMappedAutocompleteResponderManager extends api.ODAutocompleteResponderManager<ODAutocompleteResponderManagerIdMappings> {}
/**## ODMappedResponderManager `class
* A special class with types for the Open Ticket `ODResponderManager` class.
*/
export class ODMappedResponderManager extends api.ODResponderManager<ODCommandResponderManagerIdMappings,ODButtonResponderManagerIdMappings,ODDropdownResponderManagerIdMappings,ODModalResponderManagerIdMappings,ODContextMenuResponderManagerIdMappings,ODAutocompleteResponderManagerIdMappings> {}
+17
View File
@@ -0,0 +1,17 @@
///////////////////////////////////////
//OPEN TICKET SESSION MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODSessionManagerIdMappings `interface`
* A list of all available IDs in the default `ODSessionManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODSessionManagerIdMappings extends api.ODSessionManagerIdConstraint {
//"opendiscord:example-session":api.ODSession
}
/**## ODMappedSessionManager `class
* A special class with types for the Open Ticket `ODSessionManager` class.
*/
export class ODMappedSessionManager extends api.ODSessionManager<ODSessionManagerIdMappings> {}
+24
View File
@@ -0,0 +1,24 @@
///////////////////////////////////////
//OPEN TICKET STARTSCREEN MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
import { ODLiveStatusManagerIdMappings } from "./console"
/**## ODStartScreenManagerIdMappings `interface`
* A list of all available IDs in the default `ODStartScreenManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODStartScreenManagerIdMappings extends api.ODStartScreenManagerIdConstraint {
"opendiscord:logo":api.ODStartScreenLogoComponent,
"opendiscord:header":api.ODStartScreenHeaderComponent,
"opendiscord:flags":api.ODStartScreenFlagsCategoryComponent,
"opendiscord:plugins":api.ODStartScreenPluginsCategoryComponent,
"opendiscord:stats":api.ODStartScreenPropertiesCategoryComponent,
"opendiscord:livestatus":api.ODStartScreenLiveStatusCategoryComponent<api.ODLiveStatusManager<ODLiveStatusManagerIdMappings>>,
"opendiscord:logs":api.ODStartScreenCategoryComponent
}
/**## ODMappedStartScreenManager `class
* A special class with types for the Open Ticket `ODStartScreenManager` class.
*/
export class ODMappedStartScreenManager extends api.ODStartScreenManager<ODStartScreenManagerIdMappings> {}
+139
View File
@@ -0,0 +1,139 @@
///////////////////////////////////////
//OPEN TICKET STATISTICS MAPPINGS
///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api"
/**## ODStatisticManagerIdMappings `interface`
* A list of all available IDs in the default `ODStatisticManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODStatisticManagerIdMappings extends api.ODStatisticManagerIdConstraint {
"opendiscord:global":ODGlobalStatisticScope,
"opendiscord:system":ODSystemStatisticScope,
"opendiscord:user":ODUserStatisticScope,
"opendiscord:ticket":ODTicketStatisticScope,
"opendiscord:participants":ODParticipantsStatisticScope,
"opendiscord:messages":ODMessagesStatisticScope,
}
/**## ODMappedStatisticManager `class
* A special class with types for the Open Ticket `ODStatisticManager` class.
*/
export class ODMappedStatisticManager extends api.ODStatisticManager<ODStatisticManagerIdMappings> {}
/**## ODGlobalStatisticScope `class
* A special class with types for the Open Ticket `Global` statistics category/scope.
*/
export class ODGlobalStatisticScope extends api.ODStatisticGlobalScope<ODGlobalStatisticScopeIdMappings> {}
/**## ODSystemStatisticScope `class
* A special class with types for the Open Ticket `System` statistics category/scope.
*/
export class ODSystemStatisticScope extends api.ODStatisticGlobalScope<ODSystemStatisticScopeIdMappings> {}
/**## ODUserStatisticScope `class
* A special class with types for the Open Ticket `User` statistics category/scope.
*/
export class ODUserStatisticScope extends api.ODStatisticScope<ODUserStatisticScopeIdMappings> {}
/**## ODTicketStatisticScope `class
* A special class with types for the Open Ticket `Ticket` statistics category/scope.
*/
export class ODTicketStatisticScope extends api.ODStatisticScope<ODTicketStatisticScopeIdMappings> {}
/**## ODParticipantsStatisticScope `class
* A special class with types for the Open Ticket `Participants` statistics category/scope.
*/
export class ODParticipantsStatisticScope extends api.ODStatisticScope<ODParticipantsStatisticScopeIdMappings> {}
/**## ODMessagesStatisticScope `class
* A special class with types for the Open Ticket `Messages` statistics category/scope.
*/
export class ODMessagesStatisticScope extends api.ODStatisticScope<ODMessagesStatisticScopeIdMappings> {}
/////////////////////////////////////////
// STATISTICS MAPPINGS, CATEGORIES & TYPES
/////////////////////////////////////////
/**## ODGlobalStatisticScopeIdMappings `interface`
* A list of all available IDs in the default `ODGlobalStatisticScope` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODGlobalStatisticScopeIdMappings extends api.ODStatisticScopeIdConstraint {
"opendiscord:tickets-created":api.ODBaseStatistic,
"opendiscord:tickets-closed":api.ODBaseStatistic,
"opendiscord:tickets-deleted":api.ODBaseStatistic,
"opendiscord:tickets-reopened":api.ODBaseStatistic,
"opendiscord:tickets-autoclosed":api.ODBaseStatistic,
"opendiscord:tickets-autodeleted":api.ODBaseStatistic,
"opendiscord:tickets-claimed":api.ODBaseStatistic,
"opendiscord:tickets-pinned":api.ODBaseStatistic,
"opendiscord:tickets-moved":api.ODBaseStatistic,
"opendiscord:tickets-transferred":api.ODBaseStatistic,
"opendiscord:users-blacklisted":api.ODBaseStatistic,
"opendiscord:transcripts-created":api.ODBaseStatistic,
"opendiscord:ticket-volume":api.ODDynamicStatistic,
"opendiscord:average-tickets":api.ODDynamicStatistic,
}
/**## ODSystemStatisticScopeIdMappings `interface`
* A list of all available IDs in the default `ODSystemStatisticScope` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODSystemStatisticScopeIdMappings extends api.ODStatisticScopeIdConstraint {
"opendiscord:startup-date":api.ODDynamicStatistic,
"opendiscord:system-uptime":api.ODDynamicStatistic,
"opendiscord:version":api.ODDynamicStatistic
}
/**## ODUserStatisticScopeIdMappings `interface`
* A list of all available IDs in the default `ODUserStatisticScope` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODUserStatisticScopeIdMappings extends api.ODStatisticScopeIdConstraint {
"opendiscord:name":api.ODDynamicStatistic,
"opendiscord:role":api.ODDynamicStatistic,
"opendiscord:tickets-created":api.ODBaseStatistic,
"opendiscord:tickets-closed":api.ODBaseStatistic,
"opendiscord:tickets-deleted":api.ODBaseStatistic,
"opendiscord:tickets-reopened":api.ODBaseStatistic,
"opendiscord:tickets-claimed":api.ODBaseStatistic,
"opendiscord:tickets-pinned":api.ODBaseStatistic,
"opendiscord:tickets-moved":api.ODBaseStatistic,
"opendiscord:tickets-transferred":api.ODBaseStatistic,
"opendiscord:users-blacklisted":api.ODBaseStatistic,
"opendiscord:transcripts-created":api.ODBaseStatistic,
"opendiscord:current-tickets":api.ODDynamicStatistic,
}
/**## ODTicketStatisticScopeIdMappings `interface`
* A list of all available IDs in the default `ODTicketStatisticScope` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODTicketStatisticScopeIdMappings extends api.ODStatisticScopeIdConstraint {
"opendiscord:name":api.ODDynamicStatistic,
"opendiscord:status":api.ODDynamicStatistic,
"opendiscord:claimed":api.ODDynamicStatistic,
"opendiscord:pinned":api.ODDynamicStatistic,
"opendiscord:creation-date":api.ODDynamicStatistic,
"opendiscord:creator":api.ODDynamicStatistic,
"opendiscord:ticket-age":api.ODDynamicStatistic,
"opendiscord:response-time":api.ODDynamicStatistic,
"opendiscord:resolution-time":api.ODDynamicStatistic,
}
/**## ODParticipantsStatisticScopeIdMappings `interface`
* A list of all available IDs in the default `ODParticipantsStatisticScope` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODParticipantsStatisticScopeIdMappings extends api.ODStatisticScopeIdConstraint {
"opendiscord:participants":api.ODDynamicStatistic
}
/**## ODMessagesStatisticScopeIdMappings `interface`
* A list of all available IDs in the default `ODMessagesStatisticScope` class in `opendiscord`.
* It's used to generate typescript declarations for this class.
*/
export interface ODMessagesStatisticScopeIdMappings extends api.ODStatisticScopeIdConstraint {
"opendiscord:count":api.ODDynamicStatistic
}
@@ -1,15 +1,13 @@
/////////////////////////////////////// ///////////////////////////////////////
//DEFAULT VERIFYBAR MODULE //OPEN TICKET VERIFYBAR MAPPINGS
/////////////////////////////////////// ///////////////////////////////////////
import * as api from "@open-discord-bots/framework/api" import * as api from "@open-discord-bots/framework/api"
import { ODWorkerManager_Default } from "../defaults/worker"
import * as discord from "discord.js"
/**## ODVerifyBarManagerIds_Default `interface` /**## ODVerifyBarManagerIdMappings `interface`
* This interface is a list of ids available in the `ODVerifyBarManager_Default` class. * A list of all available IDs in the default `ODVerifyBarManager` class in `opendiscord`.
* It's used to generate typescript declarations for this class. * It's used to generate typescript declarations for this class.
*/ */
export interface ODVerifyBarManagerIds_Default { export interface ODVerifyBarManagerIdMappings extends api.ODVerifyBarManagerIdConstraint {
"opendiscord:claim-ticket-ticket-message":{successWorkerIds:"opendiscord:permissions"|"opendiscord:claim-ticket",failureWorkerIds:"opendiscord:back-to-ticket-message"}, "opendiscord:claim-ticket-ticket-message":{successWorkerIds:"opendiscord:permissions"|"opendiscord:claim-ticket",failureWorkerIds:"opendiscord:back-to-ticket-message"},
"opendiscord:claim-ticket-unclaim-message":{successWorkerIds:"opendiscord:permissions"|"opendiscord:claim-ticket",failureWorkerIds:"opendiscord:back-to-unclaim-message"}, "opendiscord:claim-ticket-unclaim-message":{successWorkerIds:"opendiscord:permissions"|"opendiscord:claim-ticket",failureWorkerIds:"opendiscord:back-to-unclaim-message"},
"opendiscord:unclaim-ticket-ticket-message":{successWorkerIds:"opendiscord:permissions"|"opendiscord:unclaim-ticket",failureWorkerIds:"opendiscord:back-to-ticket-message"}, "opendiscord:unclaim-ticket-ticket-message":{successWorkerIds:"opendiscord:permissions"|"opendiscord:unclaim-ticket",failureWorkerIds:"opendiscord:back-to-ticket-message"},
@@ -29,42 +27,7 @@ export interface ODVerifyBarManagerIds_Default {
"opendiscord:delete-ticket-autoclose-message":{successWorkerIds:"opendiscord:permissions"|"opendiscord:delete-ticket",failureWorkerIds:"opendiscord:back-to-autoclose-message"} "opendiscord:delete-ticket-autoclose-message":{successWorkerIds:"opendiscord:permissions"|"opendiscord:delete-ticket",failureWorkerIds:"opendiscord:back-to-autoclose-message"}
} }
/**## ODVerifyBarManager_Default `default_class` /**## ODMappedVerifyBarManager `class
* This is a special class that adds type definitions & typescript to the ODVerifyBarManager class. * A special class with types for the Open Ticket `ODVerifyBarManager` class.
* It doesn't add any extra features!
*
* This default class is made for the global variable `opendiscord.verifybars`!
*/ */
export class ODVerifyBarManager_Default extends api.ODVerifyBarManager { export class ODMappedVerifyBarManager extends api.ODVerifyBarManager<ODVerifyBarManagerIdMappings> {}
get<VerifyBarId extends keyof ODVerifyBarManagerIds_Default>(id:VerifyBarId): ODVerifyBar_Default<ODVerifyBarManagerIds_Default[VerifyBarId]["successWorkerIds"],ODVerifyBarManagerIds_Default[VerifyBarId]["failureWorkerIds"]>
get(id:api.ODValidId): api.ODVerifyBar|null
get(id:api.ODValidId): api.ODVerifyBar|null {
return super.get(id)
}
remove<VerifyBarId extends keyof ODVerifyBarManagerIds_Default>(id:VerifyBarId): ODVerifyBar_Default<ODVerifyBarManagerIds_Default[VerifyBarId]["successWorkerIds"],ODVerifyBarManagerIds_Default[VerifyBarId]["failureWorkerIds"]>
remove(id:api.ODValidId): api.ODVerifyBar|null
remove(id:api.ODValidId): api.ODVerifyBar|null {
return super.remove(id)
}
exists(id:keyof ODVerifyBarManagerIds_Default): boolean
exists(id:api.ODValidId): boolean
exists(id:api.ODValidId): boolean {
return super.exists(id)
}
}
/**## ODVerifyBar_Default `default_class`
* This is a special class that adds type definitions & typescript to the ODVerifyBar class.
* It doesn't add any extra features!
*
* This default class is made for the default `ODVerifyBar`'s!
*/
export class ODVerifyBar_Default<SuccessWorkerIds extends string,FailureWorkerIds extends string> extends api.ODVerifyBar {
declare success: ODWorkerManager_Default<api.ODButtonResponderInstance,"verifybar",{data:string|null,verifybarMessage:discord.Message<boolean>|null},SuccessWorkerIds>
declare failure: ODWorkerManager_Default<api.ODButtonResponderInstance,"verifybar",{data:string|null,verifybarMessage:discord.Message<boolean>|null},FailureWorkerIds>
}
+3 -3
View File
@@ -45,7 +45,7 @@ export const loadAllConfigCheckerTranslations = async () => {
} }
//GLOBAL FUNCTIONS //GLOBAL FUNCTIONS
export const registerDefaultCheckerSystemTranslations = (tm:api.ODCheckerTranslationRegister_Default,lm:api.ODLanguageManager_Default) => { export const registerDefaultCheckerSystemTranslations = (tm:api.ODMappedCheckerTranslationRegister,lm:api.ODMappedLanguageManager) => {
//SYSTEM //SYSTEM
//tm.quickTranslate(lm,"checker.system.headerOpenTicket","other","opendiscord:header-openticket") //OPEN TICKET (ignore) //tm.quickTranslate(lm,"checker.system.headerOpenTicket","other","opendiscord:header-openticket") //OPEN TICKET (ignore)
tm.quickTranslate(lm,"checker.system.typeError","other","opendiscord:type-error") // [ERROR] (ignore) tm.quickTranslate(lm,"checker.system.typeError","other","opendiscord:type-error") // [ERROR] (ignore)
@@ -62,7 +62,7 @@ export const registerDefaultCheckerSystemTranslations = (tm:api.ODCheckerTransla
tm.quickTranslate(lm,"checker.system.dataMessages","other","opendiscord:data-message") // message tm.quickTranslate(lm,"checker.system.dataMessages","other","opendiscord:data-message") // message
} }
export const registerDefaultCheckerMessageTranslations = (tm:api.ODCheckerTranslationRegister_Default,lm:api.ODLanguageManager_Default) => { export const registerDefaultCheckerMessageTranslations = (tm:api.ODMappedCheckerTranslationRegister,lm:api.ODMappedLanguageManager) => {
//STRUCTURES //STRUCTURES
tm.quickTranslate(lm,"checker.messages.invalidType","message","opendiscord:invalid-type") // This property needs to be the type: {0}! tm.quickTranslate(lm,"checker.messages.invalidType","message","opendiscord:invalid-type") // This property needs to be the type: {0}!
tm.quickTranslate(lm,"checker.messages.propertyMissing","message","opendiscord:property-missing") // The property {0} is missing from this object! tm.quickTranslate(lm,"checker.messages.propertyMissing","message","opendiscord:property-missing") // The property {0} is missing from this object!
@@ -137,7 +137,7 @@ export const registerDefaultCheckerMessageTranslations = (tm:api.ODCheckerTransl
tm.quickTranslate(lm,"checker.messages.idNonExistent","message","opendiscord:id-non-existent") // The id {0} doesn't exist! tm.quickTranslate(lm,"checker.messages.idNonExistent","message","opendiscord:id-non-existent") // The id {0} doesn't exist!
} }
export const registerDefaultCheckerCustomTranslations = (tm:api.ODCheckerTranslationRegister_Default,lm:api.ODLanguageManager_Default) => { export const registerDefaultCheckerCustomTranslations = (tm:api.ODMappedCheckerTranslationRegister,lm:api.ODMappedLanguageManager) => {
//CUSTOM //CUSTOM
tm.quickTranslate(lm,"checker.messages.invalidLanguage","message","opendiscord:invalid-language") // This is an invalid language! tm.quickTranslate(lm,"checker.messages.invalidLanguage","message","opendiscord:invalid-language") // This is an invalid language!
tm.quickTranslate(lm,"checker.messages.invalidButton","message","opendiscord:invalid-button") // This button needs to have at least an {0} or {1}! tm.quickTranslate(lm,"checker.messages.invalidButton","message","opendiscord:invalid-button") // This button needs to have at least an {0} or {1}!
+4 -4
View File
@@ -402,7 +402,7 @@ const loadAutoCode = () => {
await opendiscord.actions.get("opendiscord:close-ticket").run("autoclose",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autoclose",sendMessage:false}) await opendiscord.actions.get("opendiscord:close-ticket").run("autoclose",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autoclose",sendMessage:false})
await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:autoclose-message").build("timeout",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:autoclose-message").build("timeout",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message)
count++ count++
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-autoclosed",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-autoclosed",1,"increase")
} }
} }
} }
@@ -428,7 +428,7 @@ const loadAutoCode = () => {
//autoclose ticket //autoclose ticket
await opendiscord.actions.get("opendiscord:close-ticket").run("autoclose",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autoclose",sendMessage:false}) await opendiscord.actions.get("opendiscord:close-ticket").run("autoclose",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autoclose",sendMessage:false})
await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:autoclose-message").build("leave",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:autoclose-message").build("leave",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message)
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-autoclosed",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-autoclosed",1,"increase")
} }
} }
} }
@@ -457,7 +457,7 @@ const loadAutoCode = () => {
await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:autodelete-message").build("timeout",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:autodelete-message").build("timeout",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message)
await opendiscord.actions.get("opendiscord:delete-ticket").run("autodelete",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autodelete",sendMessage:false,withoutTranscript:false}) await opendiscord.actions.get("opendiscord:delete-ticket").run("autodelete",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autodelete",sendMessage:false,withoutTranscript:false})
count++ count++
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-autodeleted",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-autodeleted",1,"increase")
} }
} }
} }
@@ -484,7 +484,7 @@ const loadAutoCode = () => {
//autodelete ticket //autodelete ticket
await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:autodelete-message").build("leave",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message) await channel.send((await opendiscord.builders.messages.getSafe("opendiscord:autodelete-message").build("leave",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket})).message)
await opendiscord.actions.get("opendiscord:delete-ticket").run("autodelete",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autodelete",sendMessage:false,withoutTranscript:false}) await opendiscord.actions.get("opendiscord:delete-ticket").run("autodelete",{guild:channel.guild,channel,user:opendiscord.client.client.user,ticket,reason:"Autodelete",sendMessage:false,withoutTranscript:false})
await opendiscord.stats.get("opendiscord:global").setStat("opendiscord:tickets-autodeleted",1,"increase") await opendiscord.statistics.get("opendiscord:global").setStat("opendiscord:tickets-autodeleted",1,"increase")
} }
} }
} }
+8 -8
View File
@@ -1,7 +1,7 @@
import {opendiscord, api, utilities} from "../../index" import {opendiscord, api, utilities} from "../../index"
export const loadAllEvents = () => { export const loadAllEvents = () => {
const eventList: (keyof api.ODEventIds_Default)[] = [ const eventList: (keyof api.ODNoGeneric<api.ODEventManagerIdMappings>)[] = [
//error handling //error handling
"onErrorHandling", "onErrorHandling",
"afterErrorHandling", "afterErrorHandling",
@@ -258,13 +258,13 @@ export const loadAllEvents = () => {
"onHelpMenuComponentLoad", "onHelpMenuComponentLoad",
"afterHelpMenuComponentsLoaded", "afterHelpMenuComponentsLoaded",
//stats //statistics
"onStatScopeLoad", "onStatisticScopeLoad",
"afterStatScopesLoaded", "afterStatisticScopesLoaded",
"onStatLoad", "onStatisticLoad",
"afterStatsLoaded", "afterStatisticsLoaded",
"onStatInit", "onStatisticInit",
"afterStatsInitiated", "afterStatisticsInitiated",
//plugin loading before code //plugin loading before code
"onPluginBeforeCodeLoad", "onPluginBeforeCodeLoad",
+13 -13
View File
@@ -1,7 +1,7 @@
import {opendiscord, api, utilities} from "../../index" import {opendiscord, api, utilities} from "../../index"
export const loadAllProgressBarRenderers = async () => { export const loadAllProgressBarRenderers = async () => {
const defaultSettings: api.ODProgressBarRenderer_DefaultSettings = { const defaultSettings: api.ODDefaultProgressBarRendererSettings = {
borderColor:"gray", borderColor:"gray",
filledBarColor:"openticket", filledBarColor:"openticket",
emptyBarColor:"gray", emptyBarColor:"gray",
@@ -23,34 +23,34 @@ export const loadAllProgressBarRenderers = async () => {
} }
//VALUE RENDERER //VALUE RENDERER
const valueRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings} const valueRendererSettings: api.ODDefaultProgressBarRendererSettings = {...defaultSettings}
valueRendererSettings.labelType = "value" valueRendererSettings.labelType = "value"
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("opendiscord:value-renderer",valueRendererSettings)) opendiscord.progressbars.renderers.add(new api.ODDefaultProgressBarRenderer("opendiscord:value-renderer",valueRendererSettings))
//FRACTION RENDERER //FRACTION RENDERER
const fractionRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings} const fractionRendererSettings: api.ODDefaultProgressBarRendererSettings = {...defaultSettings}
fractionRendererSettings.labelType = "fraction" fractionRendererSettings.labelType = "fraction"
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("opendiscord:fraction-renderer",fractionRendererSettings)) opendiscord.progressbars.renderers.add(new api.ODDefaultProgressBarRenderer("opendiscord:fraction-renderer",fractionRendererSettings))
//PERCENTAGE RENDERER //PERCENTAGE RENDERER
const percentageRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings} const percentageRendererSettings: api.ODDefaultProgressBarRendererSettings = {...defaultSettings}
percentageRendererSettings.labelType = "percentage" percentageRendererSettings.labelType = "percentage"
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("opendiscord:percentage-renderer",percentageRendererSettings)) opendiscord.progressbars.renderers.add(new api.ODDefaultProgressBarRenderer("opendiscord:percentage-renderer",percentageRendererSettings))
//TIME MS RENDERER //TIME MS RENDERER
const timeMsRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings} const timeMsRendererSettings: api.ODDefaultProgressBarRendererSettings = {...defaultSettings}
timeMsRendererSettings.labelType = "time-ms" timeMsRendererSettings.labelType = "time-ms"
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("opendiscord:time-ms-renderer",timeMsRendererSettings)) opendiscord.progressbars.renderers.add(new api.ODDefaultProgressBarRenderer("opendiscord:time-ms-renderer",timeMsRendererSettings))
//TIME SEC RENDERER //TIME SEC RENDERER
const timeSecRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings} const timeSecRendererSettings: api.ODDefaultProgressBarRendererSettings = {...defaultSettings}
timeSecRendererSettings.labelType = "time-sec" timeSecRendererSettings.labelType = "time-sec"
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("opendiscord:time-sec-renderer",timeSecRendererSettings)) opendiscord.progressbars.renderers.add(new api.ODDefaultProgressBarRenderer("opendiscord:time-sec-renderer",timeSecRendererSettings))
//TIME MIN RENDERER //TIME MIN RENDERER
const timeMinRendererSettings: api.ODProgressBarRenderer_DefaultSettings = {...defaultSettings} const timeMinRendererSettings: api.ODDefaultProgressBarRendererSettings = {...defaultSettings}
timeMinRendererSettings.labelType = "time-min" timeMinRendererSettings.labelType = "time-min"
opendiscord.progressbars.renderers.add(new api.ODProgressBarRenderer_Default("opendiscord:time-min-renderer",timeMinRendererSettings)) opendiscord.progressbars.renderers.add(new api.ODDefaultProgressBarRenderer("opendiscord:time-min-renderer",timeMinRendererSettings))
} }
export const loadAllProgressBars = async () => { export const loadAllProgressBars = async () => {
@@ -1,41 +1,41 @@
import {opendiscord, api, utilities} from "../../index" import {opendiscord, api, utilities} from "../../index"
import * as discord from "discord.js" import * as discord from "discord.js"
const stats = opendiscord.stats const stats = opendiscord.statistics
const lang = opendiscord.languages const lang = opendiscord.languages
export const loadAllStatScopes = async () => { export const loadAllStatisticScopes = async () => {
stats.add(new api.ODStatGlobalScope("opendiscord:global",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.global")))) stats.add(new api.ODStatisticGlobalScope("opendiscord:global",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.global"))))
stats.add(new api.ODStatGlobalScope("opendiscord:system",utilities.emojiTitle("⚙️",lang.getTranslation("stats.scopes.system")))) stats.add(new api.ODStatisticGlobalScope("opendiscord:system",utilities.emojiTitle("⚙️",lang.getTranslation("stats.scopes.system"))))
stats.add(new api.ODStatScope("opendiscord:user",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.user")))) stats.add(new api.ODStatisticScope("opendiscord:user",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.user"))))
stats.add(new api.ODStatScope("opendiscord:ticket",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.ticket")))) stats.add(new api.ODStatisticScope("opendiscord:ticket",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.ticket"))))
stats.add(new api.ODStatScope("opendiscord:participants",utilities.emojiTitle("👥",lang.getTranslation("stats.scopes.participants")))) stats.add(new api.ODStatisticScope("opendiscord:participants",utilities.emojiTitle("👥",lang.getTranslation("stats.scopes.participants"))))
stats.add(new api.ODStatScope("opendiscord:messages",utilities.emojiTitle("💬",lang.getTranslation("stats.scopes.messages")))) stats.add(new api.ODStatisticScope("opendiscord:messages",utilities.emojiTitle("💬",lang.getTranslation("stats.scopes.messages"))))
} }
export const loadAllStats = async () => { export const loadAllStatistics = async () => {
const generalConfig = opendiscord.configs.get("opendiscord:general") const generalConfig = opendiscord.configs.get("opendiscord:general")
if (!generalConfig) return if (!generalConfig) return
const global = stats.get("opendiscord:global") const global = stats.get("opendiscord:global")
if (global){ if (global){
global.add(new api.ODBasicStat("opendiscord:tickets-created",13,lang.getTranslation("stats.properties.ticketsCreated"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-created",13,lang.getTranslation("stats.properties.ticketsCreated"),0))
global.add(new api.ODBasicStat("opendiscord:tickets-closed",12,lang.getTranslation("stats.properties.ticketsClosed"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-closed",12,lang.getTranslation("stats.properties.ticketsClosed"),0))
global.add(new api.ODBasicStat("opendiscord:tickets-deleted",11,lang.getTranslation("stats.properties.ticketsDeleted"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-deleted",11,lang.getTranslation("stats.properties.ticketsDeleted"),0))
global.add(new api.ODBasicStat("opendiscord:tickets-reopened",10,lang.getTranslation("stats.properties.ticketsReopened"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-reopened",10,lang.getTranslation("stats.properties.ticketsReopened"),0))
global.add(new api.ODBasicStat("opendiscord:tickets-autoclosed",9,lang.getTranslation("stats.properties.ticketsAutoclosed"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-autoclosed",9,lang.getTranslation("stats.properties.ticketsAutoclosed"),0))
global.add(new api.ODBasicStat("opendiscord:tickets-autodeleted",8,lang.getTranslation("stats.properties.ticketsAutodeleted"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-autodeleted",8,lang.getTranslation("stats.properties.ticketsAutodeleted"),0))
global.add(new api.ODBasicStat("opendiscord:tickets-claimed",7,lang.getTranslation("stats.properties.ticketsClaimed"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-claimed",7,lang.getTranslation("stats.properties.ticketsClaimed"),0))
global.add(new api.ODBasicStat("opendiscord:tickets-pinned",6,lang.getTranslation("stats.properties.ticketsPinned"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-pinned",6,lang.getTranslation("stats.properties.ticketsPinned"),0))
global.add(new api.ODBasicStat("opendiscord:tickets-moved",5,lang.getTranslation("stats.properties.ticketsMoved"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-moved",5,lang.getTranslation("stats.properties.ticketsMoved"),0))
global.add(new api.ODBasicStat("opendiscord:tickets-transferred",4,lang.getTranslation("stats.properties.ticketsTransferred"),0)) global.add(new api.ODBaseStatistic("opendiscord:tickets-transferred",4,lang.getTranslation("stats.properties.ticketsTransferred"),0))
global.add(new api.ODBasicStat("opendiscord:users-blacklisted",3,lang.getTranslation("stats.properties.usersBlacklisted"),0)) global.add(new api.ODBaseStatistic("opendiscord:users-blacklisted",3,lang.getTranslation("stats.properties.usersBlacklisted"),0))
global.add(new api.ODBasicStat("opendiscord:transcripts-created",2,lang.getTranslation("stats.properties.transcriptsCreated"),0)) global.add(new api.ODBaseStatistic("opendiscord:transcripts-created",2,lang.getTranslation("stats.properties.transcriptsCreated"),0))
global.add(new api.ODDynamicStat("opendiscord:ticket-volume",1,() => { global.add(new api.ODDynamicStatistic("opendiscord:ticket-volume",1,() => {
return lang.getTranslation("stats.properties.ticketVolume")+": `"+opendiscord.tickets.getLength()+"`" return lang.getTranslation("stats.properties.ticketVolume")+": `"+opendiscord.tickets.getLength()+"`"
})) }))
global.add(new api.ODDynamicStat("opendiscord:average-tickets",0,async () => { global.add(new api.ODDynamicStatistic("opendiscord:average-tickets",0,async () => {
const userTicketsCreated = await opendiscord.stats.get("opendiscord:user").getAllStats("opendiscord:tickets-created") const userTicketsCreated = await opendiscord.statistics.get("opendiscord:user").getAllStats("opendiscord:tickets-created")
const average = userTicketsCreated.map((s) => s.value as number).filter((t) => t > 0).reduce((prev,curr) => prev+curr,0)/userTicketsCreated.length const average = userTicketsCreated.map((s) => s.value as number).filter((t) => t > 0).reduce((prev,curr) => prev+curr,0)/userTicketsCreated.length
const roundedAverage = Math.round(average*1000)/1000 const roundedAverage = Math.round(average*1000)/1000
return lang.getTranslation("stats.properties.averageTickets")+": `"+roundedAverage+"`" return lang.getTranslation("stats.properties.averageTickets")+": `"+roundedAverage+"`"
@@ -44,23 +44,23 @@ export const loadAllStats = async () => {
const system = stats.get("opendiscord:system") const system = stats.get("opendiscord:system")
if (system){ if (system){
system.add(new api.ODDynamicStat("opendiscord:startup-date",2,() => { system.add(new api.ODDynamicStatistic("opendiscord:startup-date",2,() => {
return lang.getTranslation("params.uppercase.startupDate")+": "+discord.time(opendiscord.processStartupDate,"f") return lang.getTranslation("params.uppercase.startupDate")+": "+discord.time(opendiscord.processStartupDate,"f")
})) }))
system.add(new api.ODDynamicStat("opendiscord:system-uptime",1,() => { system.add(new api.ODDynamicStatistic("opendiscord:system-uptime",1,() => {
return lang.getTranslation("params.uppercase.uptime")+": "+discord.time(opendiscord.processStartupDate,"R") return lang.getTranslation("params.uppercase.uptime")+": "+discord.time(opendiscord.processStartupDate,"R")
})) }))
system.add(new api.ODDynamicStat("opendiscord:version",0,() => { system.add(new api.ODDynamicStatistic("opendiscord:version",0,() => {
return lang.getTranslation("params.uppercase.version")+": `"+opendiscord.versions.get("opendiscord:version").toString()+"`" return lang.getTranslation("params.uppercase.version")+": `"+opendiscord.versions.get("opendiscord:version").toString()+"`"
})) }))
} }
const user = stats.get("opendiscord:user") const user = stats.get("opendiscord:user")
if (user){ if (user){
user.add(new api.ODDynamicStat("opendiscord:name",11,async (scopeId,guild,channel,user) => { user.add(new api.ODDynamicStatistic("opendiscord:name",11,async (scopeId,guild,channel,user) => {
return lang.getTranslation("params.uppercase.name")+": "+discord.userMention(scopeId) return lang.getTranslation("params.uppercase.name")+": "+discord.userMention(scopeId)
})) }))
user.add(new api.ODDynamicStat("opendiscord:role",10,async (scopeId,guild,channel,user) => { user.add(new api.ODDynamicStatistic("opendiscord:role",10,async (scopeId,guild,channel,user) => {
const scopeMember = await opendiscord.client.fetchGuildMember(guild,scopeId) const scopeMember = await opendiscord.client.fetchGuildMember(guild,scopeId)
if (!scopeMember) return "" if (!scopeMember) return ""
@@ -72,27 +72,27 @@ export const loadAllStats = async () => {
if (permissions.type == "support") return lang.getTranslation("params.uppercase.role")+": 💬 `"+lang.getTranslation("stats.roles.support")+"`" if (permissions.type == "support") return lang.getTranslation("params.uppercase.role")+": 💬 `"+lang.getTranslation("stats.roles.support")+"`"
else return lang.getTranslation("params.uppercase.role")+": 👤 `"+lang.getTranslation("stats.roles.member")+"`" else return lang.getTranslation("params.uppercase.role")+": 👤 `"+lang.getTranslation("stats.roles.member")+"`"
})) }))
user.add(new api.ODBasicStat("opendiscord:tickets-created",10,lang.getTranslation("stats.properties.ticketsCreated"),0)) user.add(new api.ODBaseStatistic("opendiscord:tickets-created",10,lang.getTranslation("stats.properties.ticketsCreated"),0))
user.add(new api.ODBasicStat("opendiscord:tickets-closed",9,lang.getTranslation("stats.properties.ticketsClosed"),0)) user.add(new api.ODBaseStatistic("opendiscord:tickets-closed",9,lang.getTranslation("stats.properties.ticketsClosed"),0))
user.add(new api.ODBasicStat("opendiscord:tickets-deleted",8,lang.getTranslation("stats.properties.ticketsDeleted"),0)) user.add(new api.ODBaseStatistic("opendiscord:tickets-deleted",8,lang.getTranslation("stats.properties.ticketsDeleted"),0))
user.add(new api.ODBasicStat("opendiscord:tickets-reopened",7,lang.getTranslation("stats.properties.ticketsReopened"),0)) user.add(new api.ODBaseStatistic("opendiscord:tickets-reopened",7,lang.getTranslation("stats.properties.ticketsReopened"),0))
user.add(new api.ODBasicStat("opendiscord:tickets-claimed",6,lang.getTranslation("stats.properties.ticketsClaimed"),0)) user.add(new api.ODBaseStatistic("opendiscord:tickets-claimed",6,lang.getTranslation("stats.properties.ticketsClaimed"),0))
user.add(new api.ODBasicStat("opendiscord:tickets-pinned",5,lang.getTranslation("stats.properties.ticketsPinned"),0)) user.add(new api.ODBaseStatistic("opendiscord:tickets-pinned",5,lang.getTranslation("stats.properties.ticketsPinned"),0))
user.add(new api.ODBasicStat("opendiscord:tickets-moved",4,lang.getTranslation("stats.properties.ticketsMoved"),0)) user.add(new api.ODBaseStatistic("opendiscord:tickets-moved",4,lang.getTranslation("stats.properties.ticketsMoved"),0))
user.add(new api.ODBasicStat("opendiscord:tickets-transferred",3,lang.getTranslation("stats.properties.ticketsTransferred"),0)) user.add(new api.ODBaseStatistic("opendiscord:tickets-transferred",3,lang.getTranslation("stats.properties.ticketsTransferred"),0))
user.add(new api.ODBasicStat("opendiscord:users-blacklisted",2,lang.getTranslation("stats.properties.usersBlacklisted"),0)) user.add(new api.ODBaseStatistic("opendiscord:users-blacklisted",2,lang.getTranslation("stats.properties.usersBlacklisted"),0))
user.add(new api.ODBasicStat("opendiscord:transcripts-created",1,lang.getTranslation("stats.properties.transcriptsCreated"),0)) user.add(new api.ODBaseStatistic("opendiscord:transcripts-created",1,lang.getTranslation("stats.properties.transcriptsCreated"),0))
user.add(new api.ODDynamicStat("opendiscord:current-tickets",0,async (scopeId,guild,channel,user) => { user.add(new api.ODDynamicStatistic("opendiscord:current-tickets",0,async (scopeId,guild,channel,user) => {
return lang.getTranslation("stats.properties.currentTickets")+": `"+opendiscord.tickets.getFiltered((t) => t.get("opendiscord:opened-by").value === scopeId).length+"`" return lang.getTranslation("stats.properties.currentTickets")+": `"+opendiscord.tickets.getFiltered((t) => t.get("opendiscord:opened-by").value === scopeId).length+"`"
})) }))
} }
const ticket = stats.get("opendiscord:ticket") const ticket = stats.get("opendiscord:ticket")
if (ticket){ if (ticket){
ticket.add(new api.ODDynamicStat("opendiscord:name",5,async (scopeId,guild,channel,user) => { ticket.add(new api.ODDynamicStatistic("opendiscord:name",5,async (scopeId,guild,channel,user) => {
return lang.getTranslation("params.uppercase.ticket")+": "+discord.channelMention(scopeId) return lang.getTranslation("params.uppercase.ticket")+": "+discord.channelMention(scopeId)
})) }))
ticket.add(new api.ODDynamicStat("opendiscord:status",4,async (scopeId,guild,channel,user) => { ticket.add(new api.ODDynamicStatistic("opendiscord:status",4,async (scopeId,guild,channel,user) => {
const ticket = opendiscord.tickets.get(scopeId) const ticket = opendiscord.tickets.get(scopeId)
if (!ticket) return "" if (!ticket) return ""
@@ -100,35 +100,35 @@ export const loadAllStats = async () => {
return closed ? lang.getTranslation("params.uppercase.status")+": 🔒 `"+lang.getTranslation("params.uppercase.closed")+"`" : lang.getTranslation("params.uppercase.status")+": 🔓 `"+lang.getTranslation("params.uppercase.open")+"`" return closed ? lang.getTranslation("params.uppercase.status")+": 🔒 `"+lang.getTranslation("params.uppercase.closed")+"`" : lang.getTranslation("params.uppercase.status")+": 🔓 `"+lang.getTranslation("params.uppercase.open")+"`"
})) }))
ticket.add(new api.ODDynamicStat("opendiscord:claimed",3,async (scopeId,guild,channel,user) => { ticket.add(new api.ODDynamicStatistic("opendiscord:claimed",3,async (scopeId,guild,channel,user) => {
const ticket = opendiscord.tickets.get(scopeId) const ticket = opendiscord.tickets.get(scopeId)
if (!ticket) return "" if (!ticket) return ""
const claimed = ticket.exists("opendiscord:claimed") ? ticket.get("opendiscord:claimed").value : false const claimed = ticket.exists("opendiscord:claimed") ? ticket.get("opendiscord:claimed").value : false
return claimed ? lang.getTranslation("params.uppercase.claimed")+": 🟢 `"+lang.getTranslation("params.uppercase.yes")+"`" : lang.getTranslation("params.uppercase.claimed")+": 🔴 `"+lang.getTranslation("params.uppercase.no")+"`" return claimed ? lang.getTranslation("params.uppercase.claimed")+": 🟢 `"+lang.getTranslation("params.uppercase.yes")+"`" : lang.getTranslation("params.uppercase.claimed")+": 🔴 `"+lang.getTranslation("params.uppercase.no")+"`"
})) }))
ticket.add(new api.ODDynamicStat("opendiscord:pinned",2,async (scopeId,guild,channel,user) => { ticket.add(new api.ODDynamicStatistic("opendiscord:pinned",2,async (scopeId,guild,channel,user) => {
const ticket = opendiscord.tickets.get(scopeId) const ticket = opendiscord.tickets.get(scopeId)
if (!ticket) return "" if (!ticket) return ""
const pinned = ticket.exists("opendiscord:pinned") ? ticket.get("opendiscord:pinned").value : false const pinned = ticket.exists("opendiscord:pinned") ? ticket.get("opendiscord:pinned").value : false
return pinned ? lang.getTranslation("params.uppercase.pinned")+": 🟢 `"+lang.getTranslation("params.uppercase.yes")+"`" : lang.getTranslation("params.uppercase.pinned")+": 🔴 `"+lang.getTranslation("params.uppercase.no")+"`" return pinned ? lang.getTranslation("params.uppercase.pinned")+": 🟢 `"+lang.getTranslation("params.uppercase.yes")+"`" : lang.getTranslation("params.uppercase.pinned")+": 🔴 `"+lang.getTranslation("params.uppercase.no")+"`"
})) }))
ticket.add(new api.ODDynamicStat("opendiscord:creation-date",1,async (scopeId,guild,channel,user) => { ticket.add(new api.ODDynamicStatistic("opendiscord:creation-date",1,async (scopeId,guild,channel,user) => {
const ticket = opendiscord.tickets.get(scopeId) const ticket = opendiscord.tickets.get(scopeId)
if (!ticket) return "" if (!ticket) return ""
const rawDate = ticket.get("opendiscord:opened-on").value ?? new Date().getTime() const rawDate = ticket.get("opendiscord:opened-on").value ?? new Date().getTime()
return lang.getTranslation("params.uppercase.creationDate")+": "+discord.time(new Date(rawDate),"f") return lang.getTranslation("params.uppercase.creationDate")+": "+discord.time(new Date(rawDate),"f")
})) }))
ticket.add(new api.ODDynamicStat("opendiscord:creator",0,async (scopeId,guild,channel,user) => { ticket.add(new api.ODDynamicStatistic("opendiscord:creator",0,async (scopeId,guild,channel,user) => {
const ticket = opendiscord.tickets.get(scopeId) const ticket = opendiscord.tickets.get(scopeId)
if (!ticket) return "" if (!ticket) return ""
const creator = ticket.get("opendiscord:opened-by").value const creator = ticket.get("opendiscord:opened-by").value
return lang.getTranslation("params.uppercase.creator")+": "+ (creator ? discord.userMention(creator) : "`unknown`") return lang.getTranslation("params.uppercase.creator")+": "+ (creator ? discord.userMention(creator) : "`unknown`")
})) }))
ticket.add(new api.ODDynamicStat("opendiscord:ticket-age",-1,async (scopeId,guild,channel,user) => { ticket.add(new api.ODDynamicStatistic("opendiscord:ticket-age",-1,async (scopeId,guild,channel,user) => {
const ticket = opendiscord.tickets.get(scopeId) const ticket = opendiscord.tickets.get(scopeId)
if (!ticket) return "" if (!ticket) return ""
@@ -142,7 +142,7 @@ export const loadAllStats = async () => {
const participants = stats.get("opendiscord:participants") const participants = stats.get("opendiscord:participants")
if (participants){ if (participants){
participants.add(new api.ODDynamicStat("opendiscord:participants",0,async (scopeId,guild,channel,user) => { participants.add(new api.ODDynamicStatistic("opendiscord:participants",0,async (scopeId,guild,channel,user) => {
const ticket = opendiscord.tickets.get(scopeId) const ticket = opendiscord.tickets.get(scopeId)
if (!ticket) return "" if (!ticket) return ""
@@ -157,7 +157,7 @@ export const loadAllStats = async () => {
const messages = stats.get("opendiscord:messages") const messages = stats.get("opendiscord:messages")
if (messages){ if (messages){
messages.add(new api.ODDynamicStat("opendiscord:count",0,async (scopeId,guild,channel,user) => { messages.add(new api.ODDynamicStatistic("opendiscord:count",0,async (scopeId,guild,channel,user) => {
const ticket = opendiscord.tickets.get(scopeId) const ticket = opendiscord.tickets.get(scopeId)
if (!ticket) return "" if (!ticket) return ""
+3 -3
View File
@@ -54,7 +54,7 @@ export const loadAllOptions = async () => {
}) })
} }
export const loadTicketOption = (option:api.ODJsonConfig_DefaultOptionTicketType): api.ODTicketOption => { export const loadTicketOption = (option:api.ODOptionsJsonConfig_TicketOption): api.ODTicketOption => {
return new api.ODTicketOption(option.id,[ return new api.ODTicketOption(option.id,[
new api.ODOptionData("opendiscord:name",option.name), new api.ODOptionData("opendiscord:name",option.name),
new api.ODOptionData("opendiscord:description",option.description), new api.ODOptionData("opendiscord:description",option.description),
@@ -107,7 +107,7 @@ export const loadTicketOption = (option:api.ODJsonConfig_DefaultOptionTicketType
]) ])
} }
export const loadWebsiteOption = (opt:api.ODJsonConfig_DefaultOptionWebsiteType): api.ODWebsiteOption => { export const loadWebsiteOption = (opt:api.ODOptionsJsonConfig_WebsiteOption): api.ODWebsiteOption => {
return new api.ODWebsiteOption(opt.id,[ return new api.ODWebsiteOption(opt.id,[
new api.ODOptionData("opendiscord:name",opt.name), new api.ODOptionData("opendiscord:name",opt.name),
new api.ODOptionData("opendiscord:description",opt.description), new api.ODOptionData("opendiscord:description",opt.description),
@@ -119,7 +119,7 @@ export const loadWebsiteOption = (opt:api.ODJsonConfig_DefaultOptionWebsiteType)
]) ])
} }
export const loadRoleOption = (opt:api.ODJsonConfig_DefaultOptionRoleType): api.ODRoleOption => { export const loadRoleOption = (opt:api.ODOptionsJsonConfig_RoleOption): api.ODRoleOption => {
return new api.ODRoleOption(opt.id,[ return new api.ODRoleOption(opt.id,[
new api.ODOptionData("opendiscord:name",opt.name), new api.ODOptionData("opendiscord:name",opt.name),
new api.ODOptionData("opendiscord:description",opt.description), new api.ODOptionData("opendiscord:description",opt.description),
+1 -1
View File
@@ -23,7 +23,7 @@ export const loadAllPanels = async () => {
}) })
} }
export const loadPanel = (panel:api.ODJsonConfig_DefaultPanelType) => { export const loadPanel = (panel:api.ODPanelsJsonConfig_Panel) => {
return new api.ODPanel(panel.id,[ return new api.ODPanel(panel.id,[
new api.ODPanelData("opendiscord:name",panel.name), new api.ODPanelData("opendiscord:name",panel.name),
new api.ODPanelData("opendiscord:options",panel.options), new api.ODPanelData("opendiscord:options",panel.options),
+2 -2
View File
@@ -28,7 +28,7 @@ export const loadAllQuestions = async () => {
}) })
} }
export const loadShortQuestion = (option:api.ODJsonConfig_DefaultShortQuestionType) => { export const loadShortQuestion = (option:api.ODQuestionsJsonConfig_ShortQuestion) => {
return new api.ODShortQuestion(option.id,[ return new api.ODShortQuestion(option.id,[
new api.ODQuestionData("opendiscord:name",option.name), new api.ODQuestionData("opendiscord:name",option.name),
new api.ODQuestionData("opendiscord:required",option.required), new api.ODQuestionData("opendiscord:required",option.required),
@@ -40,7 +40,7 @@ export const loadShortQuestion = (option:api.ODJsonConfig_DefaultShortQuestionTy
]) ])
} }
export const loadParagraphQuestion = (option:api.ODJsonConfig_DefaultParagraphQuestionType) => { export const loadParagraphQuestion = (option:api.ODQuestionsJsonConfig_ParagraphQuestion) => {
return new api.ODParagraphQuestion(option.id,[ return new api.ODParagraphQuestion(option.id,[
new api.ODQuestionData("opendiscord:name",option.name), new api.ODQuestionData("opendiscord:name",option.name),
new api.ODQuestionData("opendiscord:required",option.required), new api.ODQuestionData("opendiscord:required",option.required),
+21 -20
View File
@@ -37,11 +37,12 @@
//initialize API & check npm libraries //initialize API & check npm libraries
import { loadDumpCommand, loadAllPlugins, loadErrorHandling } from "@open-discord-bots/framework" import { loadDumpCommand, loadAllPlugins, loadErrorHandling } from "@open-discord-bots/framework"
import * as utilities from "@open-discord-bots/framework/utilities" import * as utilities from "@open-discord-bots/framework/utilities"
import * as api from "./core/api/api" import * as api from "./core/api"
export * as utilities from "@open-discord-bots/framework/utilities"
export * as api from "./core/api/api"
import ansis from "ansis" import ansis from "ansis"
export * as utilities from "@open-discord-bots/framework/utilities"
export * as api from "./core/api"
utilities.checkNodeVersion("openticket") utilities.checkNodeVersion("openticket")
utilities.moduleInstalled("@open-discord-bots/framework",true) utilities.moduleInstalled("@open-discord-bots/framework",true)
@@ -822,27 +823,27 @@ const main = async () => {
await opendiscord.events.get("onHelpMenuComponentLoad").emit([opendiscord.helpmenu]) await opendiscord.events.get("onHelpMenuComponentLoad").emit([opendiscord.helpmenu])
await opendiscord.events.get("afterHelpMenuComponentsLoaded").emit([opendiscord.helpmenu]) await opendiscord.events.get("afterHelpMenuComponentsLoaded").emit([opendiscord.helpmenu])
//load stat scopes //load statistic scopes
opendiscord.log("Loading stats...","system") opendiscord.log("Loading statistics...","system")
if (opendiscord.sharedFuses.getFuse("statScopesLoading")){ if (opendiscord.sharedFuses.getFuse("statisticScopesLoading")){
opendiscord.stats.useDatabase(opendiscord.databases.get("opendiscord:stats")) opendiscord.statistics.useDatabase(opendiscord.databases.get("opendiscord:stats"))
await (await import("./data/framework/statLoader.js")).loadAllStatScopes() await (await import("./data/framework/statisticLoader.js")).loadAllStatisticScopes()
} }
await opendiscord.events.get("onStatScopeLoad").emit([opendiscord.stats]) await opendiscord.events.get("onStatisticScopeLoad").emit([opendiscord.statistics])
await opendiscord.events.get("afterStatScopesLoaded").emit([opendiscord.stats]) await opendiscord.events.get("afterStatisticScopesLoaded").emit([opendiscord.statistics])
//load stats //load statistics
if (opendiscord.sharedFuses.getFuse("statLoading")){ if (opendiscord.sharedFuses.getFuse("statisticLoading")){
await (await import("./data/framework/statLoader.js")).loadAllStats() await (await import("./data/framework/statisticLoader.js")).loadAllStatistics()
} }
await opendiscord.events.get("onStatLoad").emit([opendiscord.stats]) await opendiscord.events.get("onStatisticLoad").emit([opendiscord.statistics])
await opendiscord.events.get("afterStatsLoaded").emit([opendiscord.stats]) await opendiscord.events.get("afterStatisticsLoaded").emit([opendiscord.statistics])
//init stats //init statistics
await opendiscord.events.get("onStatInit").emit([opendiscord.stats]) await opendiscord.events.get("onStatisticInit").emit([opendiscord.statistics])
if (opendiscord.sharedFuses.getFuse("statInitiating")){ if (opendiscord.sharedFuses.getFuse("statisticInitiating")){
await opendiscord.stats.init() await opendiscord.statistics.init()
await opendiscord.events.get("afterStatsInitiated").emit([opendiscord.stats]) await opendiscord.events.get("afterStatisticsInitiated").emit([opendiscord.statistics])
} }
//plugin loading before code //plugin loading before code