(v4.2.0) Added 5 new question types
Added support for dropdown, radio select, checkbox select, file upload & text display question types.
This commit is contained in:
+13
-5
@@ -626,11 +626,19 @@ const ticketEmbeds = () => {
|
||||
if (generalConfig.data.ticketSystem.displayFieldsWithQuestions) instance.addFields(...embedOptions.fields)
|
||||
|
||||
const answers = ticket.get("opendiscord:answers").value
|
||||
answers.forEach((answer) => {
|
||||
if (!answer.value || answer.value.length == 0) return
|
||||
if (generalConfig.data.ticketSystem.questionFieldsInCodeBlock) instance.addFields({name:answer.name,value:"```"+answer.value.slice(0,1024-6)+"```",inline:false})
|
||||
else instance.addFields({name:answer.name,value:answer.value,inline:false})
|
||||
})
|
||||
for (const answer of answers){
|
||||
if (answer.type == "file-upload"){
|
||||
//render file upload fields
|
||||
if (!answer.files) continue
|
||||
const renderedFiles = answer.files.map((file) => `- [${file.name}](${file.url})`).join("\n")
|
||||
instance.addFields({name:answer.name,value:renderedFiles,inline:false})
|
||||
|
||||
}else if (typeof answer.value == "string" && answer.value.length > 0){
|
||||
//render other fields
|
||||
if (generalConfig.data.ticketSystem.questionFieldsInCodeBlock) instance.addFields({name:answer.name,value:"```"+answer.value.slice(0,1024-6)+"```",inline:false})
|
||||
else instance.addFields({name:answer.name,value:answer.value,inline:false})
|
||||
}
|
||||
}
|
||||
}else if (embedOptions.fields){
|
||||
instance.setFields(embedOptions.fields)
|
||||
}
|
||||
|
||||
@@ -1,173 +0,0 @@
|
||||
///////////////////////////////////////
|
||||
//MODAL BUILDERS
|
||||
///////////////////////////////////////
|
||||
import {opendiscord, api, utilities} from "../index.js"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const modals = opendiscord.builders.modals
|
||||
const lang = opendiscord.languages
|
||||
|
||||
export async function registerAllModals(){
|
||||
ticketModals()
|
||||
}
|
||||
const ticketModals = () => {
|
||||
//TICKET QUESTIONS
|
||||
modals.add(new api.ODModal("opendiscord:ticket-questions"))
|
||||
modals.get("opendiscord:ticket-questions").workers.add(
|
||||
new api.ODWorker("opendiscord:ticket-questions",0,async (instance,params,origin) => {
|
||||
const {option} = params
|
||||
|
||||
instance.setCustomId("od:ticket-questions_"+option.id.value+"_"+origin)
|
||||
instance.setTitle(option.exists("opendiscord:name") ? option.get("opendiscord:name").value : option.id.value)
|
||||
const questionIds = option.get("opendiscord:questions").value
|
||||
questionIds.forEach((id) => {
|
||||
const question = opendiscord.questions.get(id)
|
||||
if (!question) return
|
||||
if (question instanceof api.ODShortQuestion) instance.addQuestion({
|
||||
customId:question.id.value,
|
||||
label:question.get("opendiscord:name").value,
|
||||
style:"short",
|
||||
required:question.get("opendiscord:required").value,
|
||||
placeholder:(question.get("opendiscord:placeholder").value) ? question.get("opendiscord:placeholder").value : undefined,
|
||||
minLength:(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-min").value : undefined,
|
||||
maxLength:Math.min(1024-6,(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-max").value : (1024-6)) //embed field limit - 6x` characters
|
||||
})
|
||||
else if (question instanceof api.ODParagraphQuestion) instance.addQuestion({
|
||||
customId:question.id.value,
|
||||
label:question.get("opendiscord:name").value,
|
||||
style:"paragraph",
|
||||
required:question.get("opendiscord:required").value,
|
||||
placeholder:(question.get("opendiscord:placeholder").value) ? question.get("opendiscord:placeholder").value : undefined,
|
||||
minLength:(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-min").value : undefined,
|
||||
maxLength:Math.min(1024-6,(question.get("opendiscord:length-enabled").value) ? question.get("opendiscord:length-max").value : (1024-6)) //embed field limit - 6x` characters
|
||||
})
|
||||
})
|
||||
})
|
||||
)
|
||||
|
||||
//CLOSE TICKET REASON
|
||||
modals.add(new api.ODModal("opendiscord:close-ticket-reason"))
|
||||
modals.get("opendiscord:close-ticket-reason").workers.add(
|
||||
new api.ODWorker("opendiscord:close-ticket-reason",0,async (instance,params,origin) => {
|
||||
const {channel,message} = params
|
||||
|
||||
instance.setCustomId("od:close-ticket-reason|"+channel.id+"|"+message.id)
|
||||
instance.setTitle(lang.getTranslation("actions.buttons.close"))
|
||||
instance.addQuestion({
|
||||
customId:"reason",
|
||||
label:lang.getTranslation("params.uppercase.reason"),
|
||||
style:"paragraph",
|
||||
required:true,
|
||||
placeholder:lang.getTranslation("actions.modal.closePlaceholder")
|
||||
})
|
||||
})
|
||||
)
|
||||
|
||||
//REOPEN TICKET REASON
|
||||
modals.add(new api.ODModal("opendiscord:reopen-ticket-reason"))
|
||||
modals.get("opendiscord:reopen-ticket-reason").workers.add(
|
||||
new api.ODWorker("opendiscord:reopen-ticket-reason",0,async (instance,params,origin) => {
|
||||
const {channel,message} = params
|
||||
|
||||
instance.setCustomId("od:reopen-ticket-reason|"+channel.id+"|"+message.id)
|
||||
instance.setTitle(lang.getTranslation("actions.buttons.reopen"))
|
||||
instance.addQuestion({
|
||||
customId:"reason",
|
||||
label:lang.getTranslation("params.uppercase.reason"),
|
||||
style:"paragraph",
|
||||
required:true,
|
||||
placeholder:lang.getTranslation("actions.modal.reopenPlaceholder")
|
||||
})
|
||||
})
|
||||
)
|
||||
|
||||
//DELETE TICKET REASON
|
||||
modals.add(new api.ODModal("opendiscord:delete-ticket-reason"))
|
||||
modals.get("opendiscord:delete-ticket-reason").workers.add(
|
||||
new api.ODWorker("opendiscord:delete-ticket-reason",0,async (instance,params,origin) => {
|
||||
const {channel,message} = params
|
||||
|
||||
instance.setCustomId("od:delete-ticket-reason|"+channel.id+"|"+message.id)
|
||||
instance.setTitle(lang.getTranslation("actions.buttons.delete"))
|
||||
instance.addQuestion({
|
||||
customId:"reason",
|
||||
label:lang.getTranslation("params.uppercase.reason"),
|
||||
style:"paragraph",
|
||||
required:true,
|
||||
placeholder:lang.getTranslation("actions.modal.deletePlaceholder")
|
||||
})
|
||||
})
|
||||
)
|
||||
|
||||
//CLAIM TICKET REASON
|
||||
modals.add(new api.ODModal("opendiscord:claim-ticket-reason"))
|
||||
modals.get("opendiscord:claim-ticket-reason").workers.add(
|
||||
new api.ODWorker("opendiscord:claim-ticket-reason",0,async (instance,params,origin) => {
|
||||
const {channel,message} = params
|
||||
|
||||
instance.setCustomId("od:claim-ticket-reason|"+channel.id+"|"+message.id)
|
||||
instance.setTitle(lang.getTranslation("actions.buttons.claim"))
|
||||
instance.addQuestion({
|
||||
customId:"reason",
|
||||
label:lang.getTranslation("params.uppercase.reason"),
|
||||
style:"paragraph",
|
||||
required:true,
|
||||
placeholder:lang.getTranslation("actions.modal.claimPlaceholder")
|
||||
})
|
||||
})
|
||||
)
|
||||
|
||||
//UNCLAIM TICKET REASON
|
||||
modals.add(new api.ODModal("opendiscord:unclaim-ticket-reason"))
|
||||
modals.get("opendiscord:unclaim-ticket-reason").workers.add(
|
||||
new api.ODWorker("opendiscord:unclaim-ticket-reason",0,async (instance,params,origin) => {
|
||||
const {channel,message} = params
|
||||
|
||||
instance.setCustomId("od:unclaim-ticket-reason|"+channel.id+"|"+message.id)
|
||||
instance.setTitle(lang.getTranslation("actions.buttons.unclaim"))
|
||||
instance.addQuestion({
|
||||
customId:"reason",
|
||||
label:lang.getTranslation("params.uppercase.reason"),
|
||||
style:"paragraph",
|
||||
required:true,
|
||||
placeholder:lang.getTranslation("actions.modal.unclaimPlaceholder")
|
||||
})
|
||||
})
|
||||
)
|
||||
|
||||
//PIN TICKET REASON
|
||||
modals.add(new api.ODModal("opendiscord:pin-ticket-reason"))
|
||||
modals.get("opendiscord:pin-ticket-reason").workers.add(
|
||||
new api.ODWorker("opendiscord:pin-ticket-reason",0,async (instance,params,origin) => {
|
||||
const {channel,message} = params
|
||||
|
||||
instance.setCustomId("od:pin-ticket-reason|"+channel.id+"|"+message.id)
|
||||
instance.setTitle(lang.getTranslation("actions.buttons.pin"))
|
||||
instance.addQuestion({
|
||||
customId:"reason",
|
||||
label:lang.getTranslation("params.uppercase.reason"),
|
||||
style:"paragraph",
|
||||
required:true,
|
||||
placeholder:lang.getTranslation("actions.modal.pinPlaceholder")
|
||||
})
|
||||
})
|
||||
)
|
||||
|
||||
//UNPIN TICKET REASON
|
||||
modals.add(new api.ODModal("opendiscord:unpin-ticket-reason"))
|
||||
modals.get("opendiscord:unpin-ticket-reason").workers.add(
|
||||
new api.ODWorker("opendiscord:unpin-ticket-reason",0,async (instance,params,origin) => {
|
||||
const {channel,message} = params
|
||||
|
||||
instance.setCustomId("od:unpin-ticket-reason|"+channel.id+"|"+message.id)
|
||||
instance.setTitle(lang.getTranslation("actions.buttons.unpin"))
|
||||
instance.addQuestion({
|
||||
customId:"reason",
|
||||
label:lang.getTranslation("params.uppercase.reason"),
|
||||
style:"paragraph",
|
||||
required:true,
|
||||
placeholder:lang.getTranslation("actions.modal.unpinPlaceholder")
|
||||
})
|
||||
})
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user