Files
open-ticket/src/components/verifybarModifiers.ts
T

138 lines
8.7 KiB
TypeScript

///////////////////////////////////////
//VERIFYBAR MESSAGE MODIFIERS
///////////////////////////////////////
import {opendiscord, api, utilities} from "../index.js"
import * as discord from "discord.js"
const modifiers = opendiscord.components.modifiers
const lang = opendiscord.languages
const generalConfig = opendiscord.configs.get("opendiscord:general")
export async function addVerifyButton(instance:api.ODMessageInstance|api.ODComponentFactoryInstance<api.ODMessageComponent>,params:{guild:discord.Guild|null,channel:discord.TextBasedChannel,user:discord.User,verifybar:api.ODVerifyBar<string>},buttonStyle:"✅"|"❌",verifyButtonId:string,customLabel?:string,customColor?:api.ODValidButtonColor,customEmoji?:string){
const {guild,channel,user,verifybar} = params
if (instance instanceof api.ODMessageInstance){
//message builders
instance.addComponent(await opendiscord.builders.buttons.getSafe("opendiscord:verifybar-button").build("verifybar",{
guild,channel,user,verifybar,
buttonStyle,customColor,customEmoji,customLabel,
verifyButtonId
}))
}else{
//message components
throw new api.ODSystemError("registerAllVerifyBarModifiers addVerifyButton() => verifybar doesn't support ODComponents v2 yet!")
//const message = instance.getComponent()
//if (!message) return
//const actionRow: api.ODActionRowComponent|null = message.getComponentsOfType("action-row")[0]
//if (actionRow) actionRow.addComponent(new api.ODButtonComponent("opendiscord:verifybar-button",{
// //TODO
//}),"end")
}
}
export async function registerAllVerifyBarModifiers(){
//CLOSE TICKET VERIFYBAR
modifiers.add(new api.ODMessageComponentModifier("opendiscord:close-ticket-verifybar"))
modifiers.get("opendiscord:close-ticket-verifybar").workers.add(new api.ODWorker("opendiscord:close-ticket-verifybar",100,async (instance,params,origin,cancel) => {
if (instance instanceof api.ODMessageInstance){
instance.data.components = [] //clear actionrow
}else{
throw new api.ODSystemError("registerAllVerifyBarModifiers()... => verifybars don't support ODComponents v2 yet!")
}
//cancel, accept or close with reason
await addVerifyButton(instance,params,"❌",api.ODVerifyButtonId.Cancel)
await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.Accept)
if (generalConfig.data.system.enableTicketActionWithReason) await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.AcceptWithReason,lang.getTranslation("actions.buttons.withReason"),"blue","✏️")
}))
//REOPEN TICKET VERIFYBAR
modifiers.add(new api.ODMessageComponentModifier("opendiscord:reopen-ticket-verifybar"))
modifiers.get("opendiscord:reopen-ticket-verifybar").workers.add(new api.ODWorker("opendiscord:reopen-ticket-verifybar",100,async (instance,params,origin,cancel) => {
if (instance instanceof api.ODMessageInstance){
instance.data.components = [] //clear actionrow
}else{
throw new api.ODSystemError("registerAllVerifyBarModifiers()... => verifybars don't support ODComponents v2 yet!")
}
//cancel, accept or reopen with reason
await addVerifyButton(instance,params,"❌",api.ODVerifyButtonId.Cancel)
await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.Accept)
if (generalConfig.data.system.enableTicketActionWithReason) await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.AcceptWithReason,lang.getTranslation("actions.buttons.withReason"),"blue","✏️")
}))
//DELETE TICKET VERIFYBAR
modifiers.add(new api.ODMessageComponentModifier("opendiscord:delete-ticket-verifybar"))
modifiers.get("opendiscord:delete-ticket-verifybar").workers.add(new api.ODWorker("opendiscord:delete-ticket-verifybar",100,async (instance,params,origin,cancel) => {
if (instance instanceof api.ODMessageInstance){
instance.data.components = [] //clear actionrow
}else{
throw new api.ODSystemError("registerAllVerifyBarModifiers()... => verifybars don't support ODComponents v2 yet!")
}
//cancel, accept or delete with reason or without transcript
await addVerifyButton(instance,params,"❌",api.ODVerifyButtonId.Cancel)
await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.Accept)
if (generalConfig.data.system.enableTicketActionWithReason) await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.AcceptWithReason,lang.getTranslation("actions.buttons.withReason"),"blue","✏️")
if (generalConfig.data.system.enableDeleteWithoutTranscript) await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.AcceptWithoutTranscript,lang.getTranslation("actions.buttons.withoutTranscript"),"red","📄")
}))
//CLAIM TICKET VERIFYBAR
modifiers.add(new api.ODMessageComponentModifier("opendiscord:claim-ticket-verifybar"))
modifiers.get("opendiscord:claim-ticket-verifybar").workers.add(new api.ODWorker("opendiscord:claim-ticket-verifybar",100,async (instance,params,origin,cancel) => {
if (instance instanceof api.ODMessageInstance){
instance.data.components = [] //clear actionrow
}else{
throw new api.ODSystemError("registerAllVerifyBarModifiers()... => verifybars don't support ODComponents v2 yet!")
}
//cancel, accept or claim with reason
await addVerifyButton(instance,params,"❌",api.ODVerifyButtonId.Cancel)
await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.Accept)
if (generalConfig.data.system.enableTicketActionWithReason) await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.AcceptWithReason,lang.getTranslation("actions.buttons.withReason"),"blue","✏️")
}))
//UNCLAIM TICKET VERIFYBAR
modifiers.add(new api.ODMessageComponentModifier("opendiscord:unclaim-ticket-verifybar"))
modifiers.get("opendiscord:unclaim-ticket-verifybar").workers.add(new api.ODWorker("opendiscord:unclaim-ticket-verifybar",100,async (instance,params,origin,cancel) => {
if (instance instanceof api.ODMessageInstance){
instance.data.components = [] //clear actionrow
}else{
throw new api.ODSystemError("registerAllVerifyBarModifiers()... => verifybars don't support ODComponents v2 yet!")
}
//cancel, accept or unclaim with reason
await addVerifyButton(instance,params,"❌",api.ODVerifyButtonId.Cancel)
await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.Accept)
if (generalConfig.data.system.enableTicketActionWithReason) await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.AcceptWithReason,lang.getTranslation("actions.buttons.withReason"),"blue","✏️")
}))
//PIN TICKET VERIFYBAR
modifiers.add(new api.ODMessageComponentModifier("opendiscord:pin-ticket-verifybar"))
modifiers.get("opendiscord:pin-ticket-verifybar").workers.add(new api.ODWorker("opendiscord:pin-ticket-verifybar",100,async (instance,params,origin,cancel) => {
if (instance instanceof api.ODMessageInstance){
instance.data.components = [] //clear actionrow
}else{
throw new api.ODSystemError("registerAllVerifyBarModifiers()... => verifybars don't support ODComponents v2 yet!")
}
//cancel, accept or pin with reason
await addVerifyButton(instance,params,"❌",api.ODVerifyButtonId.Cancel)
await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.Accept)
if (generalConfig.data.system.enableTicketActionWithReason) await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.AcceptWithReason,lang.getTranslation("actions.buttons.withReason"),"blue","✏️")
}))
//UNPIN TICKET VERIFYBAR
modifiers.add(new api.ODMessageComponentModifier("opendiscord:unpin-ticket-verifybar"))
modifiers.get("opendiscord:unpin-ticket-verifybar").workers.add(new api.ODWorker("opendiscord:unpin-ticket-verifybar",100,async (instance,params,origin,cancel) => {
if (instance instanceof api.ODMessageInstance){
instance.data.components = [] //clear actionrow
}else{
throw new api.ODSystemError("registerAllVerifyBarModifiers()... => verifybars don't support ODComponents v2 yet!")
}
//cancel, accept or unpin with reason
await addVerifyButton(instance,params,"❌",api.ODVerifyButtonId.Cancel)
await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.Accept)
if (generalConfig.data.system.enableTicketActionWithReason) await addVerifyButton(instance,params,"✅",api.ODVerifyButtonId.AcceptWithReason,lang.getTranslation("actions.buttons.withReason"),"blue","✏️")
}))
}