(v4.2.0) Added sub-panels

This commit is contained in:
DJj123dj
2026-05-23 15:53:52 +02:00
parent 7f02dd5848
commit c64220cad4
14 changed files with 244 additions and 132 deletions
+3 -2
View File
@@ -270,12 +270,13 @@ export async function loadPanelAutoUpdateCode(){
const message = await opendiscord.client.fetchChannelMessage(channel,panelState.messageId)
if (!message || !message.editable || message.flags.has("Ephemeral")) continue
const panelMessage = await message.edit((await opendiscord.builders.messages.getSafe("opendiscord:panel").build("auto-update",{guild:mainServer,channel,user:opendiscord.client.client.user,panel})).message)
const panelMessage = await message.edit((await opendiscord.builders.messages.getSafe("opendiscord:panel").build("auto-update",{guild:mainServer,channel,user:opendiscord.client.client.user,panel,isSubPanel:false})).message)
if (panelMessage) await panelMsgState.setMsgState({channel,message:panelMessage},{
messageOrigin:"auto-update",
panelId:panel.id.value,
panelOptionIds:panel.get("opendiscord:options").value,
panelAutoUpdate:true
panelAutoUpdate:true,
isSubPanel:false
},panelMessage.flags.has("Ephemeral"))
opendiscord.log("Panel in server got auto-updated!","info",[
+21 -12
View File
@@ -9,11 +9,9 @@ export async function loadAllOptions(){
const loadedOption = loadTicketOption(option)
opendiscord.options.add(loadedOption)
opendiscord.options.suffix.add(loadTicketOptionSuffix(loadedOption))
}else if (option.type == "website"){
opendiscord.options.add(loadWebsiteOption(option))
}else if (option.type == "role"){
opendiscord.options.add(loadRoleOption(option))
}
}else if (option.type == "website") opendiscord.options.add(loadWebsiteOption(option))
else if (option.type == "role") opendiscord.options.add(loadRoleOption(option))
else if (option.type == "sub-panel") opendiscord.options.add(loadSubPanelOption(option))
})
//update options on config reload
@@ -23,17 +21,15 @@ export async function loadAllOptions(){
await opendiscord.options.suffix.loopAll((data,id) => {opendiscord.options.suffix.remove(id)})
//add new options
optionConfig.data.forEach((option) => {
for (const option of optionConfig.data){
if (option.type == "ticket"){
const loadedOption = loadTicketOption(option)
opendiscord.options.add(loadedOption)
opendiscord.options.suffix.add(loadTicketOptionSuffix(loadedOption))
}else if (option.type == "website"){
opendiscord.options.add(loadWebsiteOption(option))
}else if (option.type == "role"){
opendiscord.options.add(loadRoleOption(option))
}
})
}else if (option.type == "website") opendiscord.options.add(loadWebsiteOption(option))
else if (option.type == "role") opendiscord.options.add(loadRoleOption(option))
else if (option.type == "sub-panel") opendiscord.options.add(loadSubPanelOption(option))
}
//update options in tickets
await opendiscord.tickets.loopAll((ticket) => {
@@ -132,6 +128,19 @@ export const loadRoleOption = (opt:api.ODOptionsJsonConfig_RoleOption): api.ODRo
])
}
export const loadSubPanelOption = (opt:api.ODOptionsJsonConfig_SubPanelOption): api.ODSubPanelOption => {
return new api.ODSubPanelOption(opt.id,[
new api.ODOptionData("opendiscord:name",opt.name),
new api.ODOptionData("opendiscord:description",opt.description),
new api.ODOptionData("opendiscord:button-emoji",opt.button.emoji),
new api.ODOptionData("opendiscord:button-label",opt.button.label),
new api.ODOptionData("opendiscord:button-color",opt.button.color),
new api.ODOptionData("opendiscord:panel-id",opt.subPanelId)
])
}
export const loadTicketOptionSuffix = (option:api.ODTicketOption): api.ODOptionSuffix => {
const mode = option.get("opendiscord:channel-suffix").value
const globalDatabase = opendiscord.databases.get("opendiscord:global")