(v4.1.2) Massive permission system cleanup
This commit is contained in:
+34
-70
@@ -169,62 +169,44 @@ export const registerVerifyBars = async () => {
|
|||||||
//CLOSE TICKET TICKET MESSAGE
|
//CLOSE TICKET TICKET MESSAGE
|
||||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:close-ticket-ticket-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:close-ticket-ticket-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||||
opendiscord.verifybars.get("opendiscord:close-ticket-ticket-message").success.add([
|
opendiscord.verifybars.get("opendiscord:close-ticket-ticket-message").success.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.close
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:close-ticket",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:close-ticket",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.close,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when already closed
|
//return when already closed
|
||||||
if (ticket.get("opendiscord:closed").value){
|
if (ticket.get("opendiscord:closed").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:lang.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:lang.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when not allowed because of missing messages
|
//return when not allowed because of missing messages
|
||||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||||
@@ -268,62 +250,44 @@ export const registerVerifyBars = async () => {
|
|||||||
//CLOSE TICKET REOPEN MESSAGE
|
//CLOSE TICKET REOPEN MESSAGE
|
||||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:close-ticket-reopen-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:close-ticket-reopen-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
||||||
opendiscord.verifybars.get("opendiscord:close-ticket-reopen-message").success.add([
|
opendiscord.verifybars.get("opendiscord:close-ticket-reopen-message").success.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.close
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:close-ticket",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:close-ticket",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.close,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when already closed
|
//return when already closed
|
||||||
if (ticket.get("opendiscord:closed").value){
|
if (ticket.get("opendiscord:closed").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:lang.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:lang.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when not allowed because of missing messages
|
//return when not allowed because of missing messages
|
||||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||||
|
|||||||
+62
-140
@@ -119,8 +119,16 @@ export const registerVerifyBars = async () => {
|
|||||||
//DELETE TICKET TICKET MESSAGE
|
//DELETE TICKET TICKET MESSAGE
|
||||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-ticket-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-ticket-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-ticket-message"),!generalConfig.data.system.disableVerifyBars))
|
||||||
opendiscord.verifybars.get("opendiscord:delete-ticket-ticket-message").success.add([
|
opendiscord.verifybars.get("opendiscord:delete-ticket-ticket-message").success.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||||
const permissionMode = generalConfig.data.system.permissions.delete
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
||||||
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
||||||
@@ -130,54 +138,27 @@ export const registerVerifyBars = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
//check is in guild/server
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
|
||||||
const {guild,channel,user} = instance
|
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when not allowed because of missing messages
|
//return when not allowed because of missing messages
|
||||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||||
@@ -224,8 +205,16 @@ export const registerVerifyBars = async () => {
|
|||||||
//DELETE TICKET CLOSE MESSAGE
|
//DELETE TICKET CLOSE MESSAGE
|
||||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-close-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-close-message"),!generalConfig.data.system.disableVerifyBars))
|
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-close-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-close-message"),!generalConfig.data.system.disableVerifyBars))
|
||||||
opendiscord.verifybars.get("opendiscord:delete-ticket-close-message").success.add([
|
opendiscord.verifybars.get("opendiscord:delete-ticket-close-message").success.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||||
const permissionMode = generalConfig.data.system.permissions.delete
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
||||||
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
||||||
@@ -235,54 +224,27 @@ export const registerVerifyBars = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
//check is in guild/server
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
|
||||||
const {guild,channel,user} = instance
|
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when not allowed because of missing messages
|
//return when not allowed because of missing messages
|
||||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||||
@@ -333,8 +295,16 @@ export const registerVerifyBars = async () => {
|
|||||||
//DELETE TICKET REOPEN MESSAGE
|
//DELETE TICKET REOPEN MESSAGE
|
||||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-reopen-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-reopen-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-reopen-message"),!generalConfig.data.system.disableVerifyBars))
|
||||||
opendiscord.verifybars.get("opendiscord:delete-ticket-reopen-message").success.add([
|
opendiscord.verifybars.get("opendiscord:delete-ticket-reopen-message").success.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||||
const permissionMode = generalConfig.data.system.permissions.delete
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
||||||
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
||||||
@@ -344,54 +314,26 @@ export const registerVerifyBars = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
//check is in guild/server
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
|
||||||
const {guild,channel,user} = instance
|
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
//return when not allowed because of missing messages
|
//return when not allowed because of missing messages
|
||||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||||
@@ -442,8 +384,16 @@ export const registerVerifyBars = async () => {
|
|||||||
//DELETE TICKET AUTOCLOSE MESSAGE
|
//DELETE TICKET AUTOCLOSE MESSAGE
|
||||||
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-autoclose-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-autoclose-message"),!generalConfig.data.system.disableVerifyBars))
|
opendiscord.verifybars.add(new api.ODVerifyBar("opendiscord:delete-ticket-autoclose-message",opendiscord.builders.messages.getSafe("opendiscord:verifybar-autoclose-message"),!generalConfig.data.system.disableVerifyBars))
|
||||||
opendiscord.verifybars.get("opendiscord:delete-ticket-autoclose-message").success.add([
|
opendiscord.verifybars.get("opendiscord:delete-ticket-autoclose-message").success.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
||||||
const permissionMode = generalConfig.data.system.permissions.delete
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
//don't allow deleteWithoutTranscript to non-global-admins when enabled
|
||||||
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
if (params.data == "no-transcript" && generalConfig.data.system.adminOnlyDeleteWithoutTranscript){
|
||||||
@@ -453,54 +403,26 @@ export const registerVerifyBars = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
//check is in guild/server
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:delete-ticket",0,async (instance,params,source,cancel) => {
|
|
||||||
const {guild,channel,user} = instance
|
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
//return when not allowed because of missing messages
|
//return when not allowed because of missing messages
|
||||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||||
|
|||||||
+14
-34
@@ -10,50 +10,30 @@ export const registerCommandResponders = async () => {
|
|||||||
//ADD COMMAND RESPONDER
|
//ADD COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:add",generalConfig.data.prefix,"add"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:add",generalConfig.data.prefix,"add"))
|
||||||
opendiscord.responders.commands.get("opendiscord:add").workers.add([
|
opendiscord.responders.commands.get("opendiscord:add").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.add
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:add",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:add",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.add,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if in guild/Server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
|
|||||||
+16
-35
@@ -10,62 +10,43 @@ export const registerCommandResponders = async () => {
|
|||||||
//AUTOCLOSE COMMAND RESPONDER
|
//AUTOCLOSE COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:autoclose",generalConfig.data.prefix,/^autoclose/))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:autoclose",generalConfig.data.prefix,/^autoclose/))
|
||||||
opendiscord.responders.commands.get("opendiscord:autoclose").workers.add([
|
opendiscord.responders.commands.get("opendiscord:autoclose").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.autoclose
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:autoclose",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:autoclose",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.autoclose,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when already closed
|
//return when already closed
|
||||||
if (ticket.get("opendiscord:closed").value){
|
if (ticket.get("opendiscord:closed").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//subcommands
|
||||||
const scope = instance.options.getSubCommand()
|
const scope = instance.options.getSubCommand()
|
||||||
if (!scope || (scope != "disable" && scope != "enable")) return
|
if (!scope || (scope != "disable" && scope != "enable")) return
|
||||||
|
|
||||||
|
|||||||
+15
-34
@@ -10,57 +10,38 @@ export const registerCommandResponders = async () => {
|
|||||||
//AUTODELETE COMMAND RESPONDER
|
//AUTODELETE COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:autodelete",generalConfig.data.prefix,/^autodelete/))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:autodelete",generalConfig.data.prefix,/^autodelete/))
|
||||||
opendiscord.responders.commands.get("opendiscord:autodelete").workers.add([
|
opendiscord.responders.commands.get("opendiscord:autodelete").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.autodelete
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:autodelete",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:autodelete",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.autodelete,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
//error
|
//error
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//subcommands
|
||||||
const scope = instance.options.getSubCommand()
|
const scope = instance.options.getSubCommand()
|
||||||
if (!scope || (scope != "disable" && scope != "enable")) return
|
if (!scope || (scope != "disable" && scope != "enable")) return
|
||||||
|
|
||||||
|
|||||||
+13
-36
@@ -10,49 +10,26 @@ export const registerCommandResponders = async () => {
|
|||||||
//BLACKLIST COMMAND RESPONDER
|
//BLACKLIST COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:blacklist",generalConfig.data.prefix,/^blacklist/))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:blacklist",generalConfig.data.prefix,/^blacklist/))
|
||||||
opendiscord.responders.commands.get("opendiscord:blacklist").workers.add([
|
opendiscord.responders.commands.get("opendiscord:blacklist").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.blacklist
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:blacklist",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:blacklist",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.blacklist,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//subcommands
|
||||||
const scope = instance.options.getSubCommand()
|
const scope = instance.options.getSubCommand()
|
||||||
if (!scope || (scope != "add" && scope != "get" && scope != "remove" && scope != "view")) return
|
if (!scope || (scope != "add" && scope != "get" && scope != "remove" && scope != "view")) return
|
||||||
|
|
||||||
if (scope == "view"){
|
if (scope == "view"){
|
||||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:blacklist-view").build(source,{guild,channel,user}))
|
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:blacklist-view").build(source,{guild,channel,user}))
|
||||||
|
|
||||||
|
|||||||
+15
-34
@@ -10,55 +10,36 @@ export const registerCommandResponders = async () => {
|
|||||||
//CLAIM COMMAND RESPONDER
|
//CLAIM COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:claim",generalConfig.data.prefix,"claim"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:claim",generalConfig.data.prefix,"claim"))
|
||||||
opendiscord.responders.commands.get("opendiscord:claim").workers.add([
|
opendiscord.responders.commands.get("opendiscord:claim").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.claim
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:claim",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:claim",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.claim,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when already claimed
|
//return when already claimed
|
||||||
if (ticket.get("opendiscord:claimed").value){
|
if (ticket.get("opendiscord:claimed").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.claim"),layout:"simple"}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.claim"),layout:"simple"}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
|
|||||||
+11
-35
@@ -10,42 +10,18 @@ export const registerCommandResponders = async () => {
|
|||||||
//CLEAR COMMAND RESPONDER
|
//CLEAR COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:clear",generalConfig.data.prefix,"clear"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:clear",generalConfig.data.prefix,"clear"))
|
||||||
opendiscord.responders.commands.get("opendiscord:clear").workers.add([
|
opendiscord.responders.commands.get("opendiscord:clear").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.clear
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
//only allow global admins (ticket admins aren't allowed to clear tickets)
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild,{allowChannelUserScope:false,allowChannelRoleScope:false}))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:clear",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:clear",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions (only allow global admins: ticket admins aren't allowed to clear tickets)
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.clear,"support",user,member,channel,guild,{allowChannelUserScope:false,allowChannelRoleScope:false})
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild || channel.isDMBased()){
|
if (!guild || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
|
|||||||
+19
-38
@@ -11,62 +11,44 @@ export const registerCommandResponders = async () => {
|
|||||||
//CLOSE COMMAND RESPONDER
|
//CLOSE COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:close",generalConfig.data.prefix,"close"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:close",generalConfig.data.prefix,"close"))
|
||||||
opendiscord.responders.commands.get("opendiscord:close").workers.add([
|
opendiscord.responders.commands.get("opendiscord:close").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.close
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:close",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:close",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.close,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when already closed
|
//return when already closed
|
||||||
if (ticket.get("opendiscord:closed").value){
|
if (ticket.get("opendiscord:closed").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.close"),layout:"simple"}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when not allowed because of missing messages
|
//return when not allowed because of missing messages
|
||||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||||
@@ -77,11 +59,10 @@ export const registerCommandResponders = async () => {
|
|||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const reason = instance.options.getString("reason",false)
|
|
||||||
|
|
||||||
//start closing ticket
|
//start closing ticket
|
||||||
await instance.defer(false)
|
await instance.defer(false)
|
||||||
|
const reason = instance.options.getString("reason",false)
|
||||||
await opendiscord.actions.get("opendiscord:close-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
await opendiscord.actions.get("opendiscord:close-ticket").run(source,{guild,channel,user,ticket,reason,sendMessage:false})
|
||||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:close-message").build(source,{guild,channel,user,ticket,reason}))
|
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:close-message").build(source,{guild,channel,user,ticket,reason}))
|
||||||
}),
|
}),
|
||||||
|
|||||||
+16
-35
@@ -11,57 +11,38 @@ export const registerCommandResponders = async () => {
|
|||||||
//DELETE COMMAND RESPONDER
|
//DELETE COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:delete",generalConfig.data.prefix,"delete"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:delete",generalConfig.data.prefix,"delete"))
|
||||||
opendiscord.responders.commands.get("opendiscord:delete").workers.add([
|
opendiscord.responders.commands.get("opendiscord:delete").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.delete
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:delete",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:delete",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.delete,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when not allowed because of missing messages
|
//return when not allowed because of missing messages
|
||||||
if (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage){
|
if (!permsResult.isAdmin && (!generalConfig.data.system.allowCloseBeforeMessage || !generalConfig.data.system.allowCloseBeforeAdminMessage)){
|
||||||
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
const analysis = await opendiscord.transcripts.collector.ticketUserMessagesAnalysis(ticket,guild,channel)
|
||||||
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
if (analysis && !generalConfig.data.system.allowCloseBeforeMessage && analysis.totalMessages < 1){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,layout:"simple",error:lang.getTranslation("errors.descriptions.closeBeforeMessage"),customTitle:lang.getTranslation("errors.titles.noPermissions")}))
|
||||||
|
|||||||
+12
-38
@@ -10,47 +10,21 @@ export const registerCommandResponders = async () => {
|
|||||||
//HELP COMMAND RESPONDER
|
//HELP COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:help",generalConfig.data.prefix,"help"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:help",generalConfig.data.prefix,"help"))
|
||||||
opendiscord.responders.commands.get("opendiscord:help").workers.add([
|
opendiscord.responders.commands.get("opendiscord:help").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.help
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:help",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:help",0,async (instance,params,source,cancel) => {
|
||||||
const preferSlashOverText = generalConfig.data.system.preferSlashOverText
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.help,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//calculate slash/text mode for help menu
|
||||||
let mode: "slash"|"text"
|
let mode: "slash"|"text"
|
||||||
if (generalConfig.data.slashCommands && generalConfig.data.textCommands){
|
if (generalConfig.data.slashCommands && generalConfig.data.textCommands) mode = (generalConfig.data.system.preferSlashOverText) ? "slash" : "text"
|
||||||
mode = (preferSlashOverText) ? "slash" : "text"
|
else if (!generalConfig.data.slashCommands) mode = "text"
|
||||||
|
|
||||||
}else if (!generalConfig.data.slashCommands) mode = "text"
|
|
||||||
else mode = "slash"
|
else mode = "slash"
|
||||||
|
|
||||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:help-menu").build(source,{mode,page:0}))
|
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:help-menu").build(source,{mode,page:0}))
|
||||||
|
|||||||
+13
-34
@@ -10,45 +10,24 @@ export const registerCommandResponders = async () => {
|
|||||||
//MOVE COMMAND RESPONDER
|
//MOVE COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:move",generalConfig.data.prefix,"move"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:move",generalConfig.data.prefix,"move"))
|
||||||
opendiscord.responders.commands.get("opendiscord:move").workers.add([
|
opendiscord.responders.commands.get("opendiscord:move").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.move
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:move",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:move",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.move,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
|
|||||||
+13
-39
@@ -10,56 +10,30 @@ export const registerCommandResponders = async () => {
|
|||||||
//PANEL COMMAND RESPONDER
|
//PANEL COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:panel",generalConfig.data.prefix,/^panel/))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:panel",generalConfig.data.prefix,/^panel/))
|
||||||
opendiscord.responders.commands.get("opendiscord:panel").workers.add([
|
opendiscord.responders.commands.get("opendiscord:panel").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.panel
|
|
||||||
|
|
||||||
//command is disabled
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:panel",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:panel",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.panel,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild || instance.channel.type == discord.ChannelType.GroupDM){
|
if (!guild || instance.channel.type == discord.ChannelType.GroupDM){
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//get panel data
|
||||||
const id = instance.options.getString("id",true)
|
const id = instance.options.getString("id",true)
|
||||||
const panel = opendiscord.panels.get(id)
|
const panel = opendiscord.panels.get(id)
|
||||||
|
|
||||||
if (!panel){
|
if (!panel){
|
||||||
//invalid panel
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-panel-unknown").build(source,{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-panel-unknown").build(source,{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:panel-ready").build(source,{guild,channel,user,panel}))
|
await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:panel-ready").build(source,{guild,channel,user,panel}))
|
||||||
const panelMessage = await instance.channel.send((await opendiscord.builders.messages.getSafe("opendiscord:panel").build(source,{guild,channel,user,panel})).message)
|
const panelMessage = await instance.channel.send((await opendiscord.builders.messages.getSafe("opendiscord:panel").build(source,{guild,channel,user,panel})).message)
|
||||||
|
|||||||
+15
-1
@@ -44,21 +44,35 @@ export const registerCommandResponders = async () => {
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
new api.ODWorker("opendiscord:pin",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:pin",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.pin,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when already pinned
|
//return when already pinned
|
||||||
if (ticket.get("opendiscord:pinned").value){
|
if (ticket.get("opendiscord:pinned").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.pin"),layout:"simple"}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.pin"),layout:"simple"}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
|
|||||||
+15
-34
@@ -10,56 +10,37 @@ export const registerCommandResponders = async () => {
|
|||||||
//PRIORITY COMMAND RESPONDER
|
//PRIORITY COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:priority",generalConfig.data.prefix,"priority"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:priority",generalConfig.data.prefix,"priority"))
|
||||||
opendiscord.responders.commands.get("opendiscord:priority").workers.add([
|
opendiscord.responders.commands.get("opendiscord:priority").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.priority
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:priority",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:priority",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.priority,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//subcommands
|
||||||
const scope = instance.options.getSubCommand()
|
const scope = instance.options.getSubCommand()
|
||||||
if (!scope || (scope != "set" && scope != "get")) return
|
if (!scope || (scope != "set" && scope != "get")) return
|
||||||
|
|
||||||
|
|||||||
+14
-34
@@ -10,50 +10,30 @@ export const registerCommandResponders = async () => {
|
|||||||
//REMOVE COMMAND RESPONDER
|
//REMOVE COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:remove",generalConfig.data.prefix,"remove"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:remove",generalConfig.data.prefix,"remove"))
|
||||||
opendiscord.responders.commands.get("opendiscord:remove").workers.add([
|
opendiscord.responders.commands.get("opendiscord:remove").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.remove
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:remove",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:remove",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.remove,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
|
|||||||
+14
-34
@@ -10,50 +10,30 @@ export const registerCommandResponders = async () => {
|
|||||||
//RENAME COMMAND RESPONDER
|
//RENAME COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:rename",generalConfig.data.prefix,"rename"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:rename",generalConfig.data.prefix,"rename"))
|
||||||
opendiscord.responders.commands.get("opendiscord:rename").workers.add([
|
opendiscord.responders.commands.get("opendiscord:rename").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.rename
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:rename",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:rename",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.rename,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
|
|||||||
+15
-34
@@ -10,55 +10,36 @@ export const registerCommandResponders = async () => {
|
|||||||
//REOPEN COMMAND RESPONDER
|
//REOPEN COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:reopen",generalConfig.data.prefix,"reopen"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:reopen",generalConfig.data.prefix,"reopen"))
|
||||||
opendiscord.responders.commands.get("opendiscord:reopen").workers.add([
|
opendiscord.responders.commands.get("opendiscord:reopen").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.reopen
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:reopen",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:reopen",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user,member} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.reopen,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when not closed
|
//return when not closed
|
||||||
if (!ticket.get("opendiscord:closed").value){
|
if (!ticket.get("opendiscord:closed").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.reopen"),layout:"simple"}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
|
|||||||
@@ -12,13 +12,14 @@ export const registerButtonResponders = async () => {
|
|||||||
opendiscord.responders.buttons.get("opendiscord:role-option").workers.add(
|
opendiscord.responders.buttons.get("opendiscord:role-option").workers.add(
|
||||||
new api.ODWorker("opendiscord:role-option",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:role-option",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user} = instance
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//get option
|
//get option data
|
||||||
const optionId = instance.interaction.customId.split("_")[2]
|
const optionId = instance.interaction.customId.split("_")[2]
|
||||||
const option = opendiscord.options.get(optionId)
|
const option = opendiscord.options.get(optionId)
|
||||||
if (!option || !(option instanceof api.ODRoleOption)){
|
if (!option || !(option instanceof api.ODRoleOption)){
|
||||||
|
|||||||
+26
-2
@@ -57,12 +57,36 @@ export const registerCommandResponders = async () => {
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
new api.ODWorker("opendiscord:stats",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:stats",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
if (generalConfig.data.system.permissions.stats === "none"){
|
||||||
|
//command is disabled
|
||||||
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
||||||
|
return cancel()
|
||||||
|
|
||||||
|
}else if (instance.options.getSubCommand() === "reset" && !opendiscord.permissions.hasPermissions("owner",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
||||||
|
//reset --> owner/developer role is required
|
||||||
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["owner","developer"]}))
|
||||||
|
return cancel()
|
||||||
|
|
||||||
|
}else{
|
||||||
|
//default permissions check
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.stats,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//subcommands
|
||||||
const scope = instance.options.getSubCommand()
|
const scope = instance.options.getSubCommand()
|
||||||
if (!scope || (scope != "global" && scope != "ticket" && scope != "user" && scope != "reset")) return
|
if (!scope || (scope != "global" && scope != "ticket" && scope != "user" && scope != "reset")) return
|
||||||
|
|
||||||
|
|||||||
+43
-83
@@ -7,52 +7,46 @@ import * as discord from "discord.js"
|
|||||||
const generalConfig = opendiscord.configs.get("opendiscord:general")
|
const generalConfig = opendiscord.configs.get("opendiscord:general")
|
||||||
const lang = opendiscord.languages
|
const lang = opendiscord.languages
|
||||||
|
|
||||||
|
async function checkTicketCreationPerms(instance:api.ODButtonResponderInstance|api.ODDropdownResponderInstance|api.ODModalResponderInstance|api.ODCommandResponderInstance,source:api.ODActionManagerIds_Default["opendiscord:create-ticket-permissions"]["source"],guild:discord.Guild,user:discord.User,option:api.ODTicketOption){
|
||||||
|
//check ticket permissions
|
||||||
|
const permsRes = await opendiscord.actions.get("opendiscord:create-ticket-permissions").run(source,{guild,user,option})
|
||||||
|
if (!permsRes.valid && instance.channel){
|
||||||
|
//error
|
||||||
|
const newSource = (source === "slash" || source === "text") ? source : "other"
|
||||||
|
if (permsRes.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-blacklisted").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
||||||
|
else if (permsRes.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-cooldown").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,until:permsRes.cooldownUntil}))
|
||||||
|
else if (permsRes.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
||||||
|
else if (permsRes.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
||||||
|
else if (permsRes.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
||||||
|
else if (permsRes.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
||||||
|
else if (permsRes.reason == "custom") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,layout:"simple",error:permsRes.customReason ?? lang.getTranslation("errors.descriptions.unableToCreateTicket")+" `Unknown invalid_permission_reason => no reason specified by plugin`",customTitle:lang.getTranslation("errors.titles.permissionError")}))
|
||||||
|
else instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(newSource,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
||||||
|
return false
|
||||||
|
}else return true
|
||||||
|
}
|
||||||
|
|
||||||
export const registerCommandResponders = async () => {
|
export const registerCommandResponders = async () => {
|
||||||
//TICKET COMMAND RESPONDER
|
//TICKET COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:ticket",generalConfig.data.prefix,/^ticket/))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:ticket",generalConfig.data.prefix,/^ticket/))
|
||||||
opendiscord.responders.commands.get("opendiscord:ticket").workers.add([
|
opendiscord.responders.commands.get("opendiscord:ticket").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.ticket
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:ticket",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:ticket",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.ticket,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build(source,{channel:instance.channel,user:instance.user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//get option
|
//get option data
|
||||||
const optionId = instance.options.getString("id",true)
|
const optionId = instance.options.getString("id",true)
|
||||||
const option = opendiscord.options.get(optionId)
|
const option = opendiscord.options.get(optionId)
|
||||||
if (!option || !(option instanceof api.ODTicketOption)){
|
if (!option || !(option instanceof api.ODTicketOption)){
|
||||||
@@ -61,26 +55,14 @@ export const registerCommandResponders = async () => {
|
|||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//check ticket permissions
|
|
||||||
const res = await opendiscord.actions.get("opendiscord:create-ticket-permissions").run(source,{guild,user,option})
|
|
||||||
if (!res.valid){
|
|
||||||
//error
|
|
||||||
if (res.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
|
||||||
else if (res.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
|
||||||
else if (res.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
|
||||||
else if (res.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
|
||||||
else if (res.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
|
||||||
else if (res.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
|
||||||
else if (res.reason == "custom") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,layout:"simple",error:res.customReason ?? lang.getTranslation("errors.descriptions.unableToCreateTicket")+" `Unknown invalid_permission_reason => no reason specified by plugin`",customTitle:lang.getTranslation("errors.titles.permissionError")}))
|
|
||||||
else instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
|
|
||||||
//start ticket creation
|
//start ticket creation
|
||||||
if (option.exists("opendiscord:questions") && option.get("opendiscord:questions").value.length > 0){
|
if (option.exists("opendiscord:questions") && option.get("opendiscord:questions").value.length > 0){
|
||||||
//send modal
|
//send modal
|
||||||
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:ticket-questions").build(source,{guild,channel,user,option}))
|
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:ticket-questions").build(source,{guild,channel,user,option}))
|
||||||
}else{
|
}else{
|
||||||
|
//check ticket permissions
|
||||||
|
if (!checkTicketCreationPerms(instance,source,guild,user,option)) return cancel()
|
||||||
|
|
||||||
//create ticket
|
//create ticket
|
||||||
await instance.defer(true)
|
await instance.defer(true)
|
||||||
const res = await opendiscord.actions.get("opendiscord:create-ticket").run(source,{guild,user,answers:[],option})
|
const res = await opendiscord.actions.get("opendiscord:create-ticket").run(source,{guild,user,answers:[],option})
|
||||||
@@ -124,26 +106,14 @@ export const registerButtonResponders = async () => {
|
|||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//check ticket permissions
|
|
||||||
const res = await opendiscord.actions.get("opendiscord:create-ticket-permissions").run("panel-button",{guild,user,option})
|
|
||||||
if (!res.valid){
|
|
||||||
//error
|
|
||||||
if (res.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
|
||||||
else if (res.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
|
||||||
else if (res.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
|
||||||
else if (res.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
|
||||||
else if (res.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
|
||||||
else if (res.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
|
||||||
else if (res.reason == "custom") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,layout:"simple",error:res.customReason ?? lang.getTranslation("errors.descriptions.unableToCreateTicket")+" `Unknown invalid_permission_reason => no reason specified by plugin`",customTitle:lang.getTranslation("errors.titles.permissionError")}))
|
|
||||||
else instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
|
|
||||||
//start ticket creation
|
//start ticket creation
|
||||||
if (option.exists("opendiscord:questions") && option.get("opendiscord:questions").value.length > 0){
|
if (option.exists("opendiscord:questions") && option.get("opendiscord:questions").value.length > 0){
|
||||||
//send modal
|
//send modal
|
||||||
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:ticket-questions").build("panel-button",{guild,channel,user,option}))
|
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:ticket-questions").build("panel-button",{guild,channel,user,option}))
|
||||||
}else{
|
}else{
|
||||||
|
//check ticket permissions
|
||||||
|
if (!checkTicketCreationPerms(instance,"panel-button",guild,user,option)) return cancel()
|
||||||
|
|
||||||
//create ticket
|
//create ticket
|
||||||
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
||||||
|
|
||||||
@@ -180,26 +150,14 @@ export const registerDropdownResponders = async () => {
|
|||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//check ticket permissions
|
|
||||||
const res = await opendiscord.actions.get("opendiscord:create-ticket-permissions").run("panel-dropdown",{guild,user,option})
|
|
||||||
if (!res.valid){
|
|
||||||
//error
|
|
||||||
if (res.reason == "blacklist") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-blacklisted").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user}))
|
|
||||||
else if (res.reason == "cooldown") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-cooldown").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,until:res.cooldownUntil}))
|
|
||||||
else if (res.reason == "global-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global"}))
|
|
||||||
else if (res.reason == "global-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"global-user"}))
|
|
||||||
else if (res.reason == "option-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option"}))
|
|
||||||
else if (res.reason == "option-user-limit") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions-limits").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,limit:"option-user"}))
|
|
||||||
else if (res.reason == "custom") instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,layout:"simple",error:res.customReason ?? lang.getTranslation("errors.descriptions.unableToCreateTicket")+" `Unknown invalid_permission_reason => no reason specified by plugin`",customTitle:lang.getTranslation("errors.titles.permissionError")}))
|
|
||||||
else instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Unknown invalid_permission reason => calculation failed #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
|
|
||||||
//start ticket creation
|
//start ticket creation
|
||||||
if (option.exists("opendiscord:questions") && option.get("opendiscord:questions").value.length > 0){
|
if (option.exists("opendiscord:questions") && option.get("opendiscord:questions").value.length > 0){
|
||||||
//send modal
|
//send modal
|
||||||
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:ticket-questions").build("panel-dropdown",{guild,channel,user,option}))
|
instance.modal(await opendiscord.builders.modals.getSafe("opendiscord:ticket-questions").build("panel-dropdown",{guild,channel,user,option}))
|
||||||
}else{
|
}else{
|
||||||
|
//check ticket permissions
|
||||||
|
if (!checkTicketCreationPerms(instance,"panel-dropdown",guild,user,option)) return cancel()
|
||||||
|
|
||||||
//create ticket
|
//create ticket
|
||||||
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
||||||
|
|
||||||
@@ -229,6 +187,7 @@ export const registerModalResponders = async () => {
|
|||||||
opendiscord.responders.modals.get("opendiscord:ticket-questions").workers.add([
|
opendiscord.responders.modals.get("opendiscord:ticket-questions").workers.add([
|
||||||
new api.ODWorker("opendiscord:ticket-questions",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:ticket-questions",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {guild,channel,user} = instance
|
||||||
|
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
||||||
if (!channel) throw new api.ODSystemError("The 'Ticket Questions' modal requires a channel for responding!")
|
if (!channel) throw new api.ODSystemError("The 'Ticket Questions' modal requires a channel for responding!")
|
||||||
if (!guild){
|
if (!guild){
|
||||||
//error
|
//error
|
||||||
@@ -247,6 +206,9 @@ export const registerModalResponders = async () => {
|
|||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check ticket permissions
|
||||||
|
if (!checkTicketCreationPerms(instance,originalSource,guild,user,option)) return cancel()
|
||||||
|
|
||||||
//get answers
|
//get answers
|
||||||
const answers: {id:string,name:string,type:"short"|"paragraph",value:string|null}[] = []
|
const answers: {id:string,name:string,type:"short"|"paragraph",value:string|null}[] = []
|
||||||
option.get("opendiscord:questions").value.forEach((id) => {
|
option.get("opendiscord:questions").value.forEach((id) => {
|
||||||
@@ -270,8 +232,6 @@ export const registerModalResponders = async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
//create ticket
|
//create ticket
|
||||||
await instance.defer((generalConfig.data.system.replyOnTicketCreation) ? "reply" : "update",true)
|
|
||||||
|
|
||||||
const res = await opendiscord.actions.get("opendiscord:create-ticket").run(originalSource,{guild,user,answers,option})
|
const res = await opendiscord.actions.get("opendiscord:create-ticket").run(originalSource,{guild,user,answers,option})
|
||||||
if (!res.channel || !res.ticket){
|
if (!res.channel || !res.ticket){
|
||||||
//error
|
//error
|
||||||
|
|||||||
+15
-34
@@ -10,56 +10,37 @@ export const registerCommandResponders = async () => {
|
|||||||
//TOPIC COMMAND RESPONDER
|
//TOPIC COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:topic",generalConfig.data.prefix,"topic"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:topic",generalConfig.data.prefix,"topic"))
|
||||||
opendiscord.responders.commands.get("opendiscord:topic").workers.add([
|
opendiscord.responders.commands.get("opendiscord:topic").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.topic
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:topic",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:topic",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.topic,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/Server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//subcommands
|
||||||
const scope = instance.options.getSubCommand()
|
const scope = instance.options.getSubCommand()
|
||||||
if (!scope || (scope != "set")) return
|
if (!scope || (scope != "set")) return
|
||||||
|
|
||||||
|
|||||||
+14
-34
@@ -10,50 +10,30 @@ export const registerCommandResponders = async () => {
|
|||||||
//TRANSFER COMMAND RESPONDER
|
//TRANSFER COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:transfer",generalConfig.data.prefix,"transfer"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:transfer",generalConfig.data.prefix,"transfer"))
|
||||||
opendiscord.responders.commands.get("opendiscord:transfer").workers.add([
|
opendiscord.responders.commands.get("opendiscord:transfer").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.transfer
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:transfer",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:transfer",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.transfer,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/Server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
|
|||||||
+15
-34
@@ -10,55 +10,36 @@ export const registerCommandResponders = async () => {
|
|||||||
//UNCLAIM COMMAND RESPONDER
|
//UNCLAIM COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:unclaim",generalConfig.data.prefix,"unclaim"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:unclaim",generalConfig.data.prefix,"unclaim"))
|
||||||
opendiscord.responders.commands.get("opendiscord:unclaim").workers.add([
|
opendiscord.responders.commands.get("opendiscord:unclaim").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.unclaim
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:unclaim",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:unclaim",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.unclaim,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/Server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when not claimed
|
//return when not claimed
|
||||||
if (!ticket.get("opendiscord:claimed").value){
|
if (!ticket.get("opendiscord:claimed").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unclaim"),layout:"simple"}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unclaim"),layout:"simple"}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
|
|||||||
+15
-34
@@ -10,55 +10,36 @@ export const registerCommandResponders = async () => {
|
|||||||
//UNPIN COMMAND RESPONDER
|
//UNPIN COMMAND RESPONDER
|
||||||
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:unpin",generalConfig.data.prefix,"unpin"))
|
opendiscord.responders.commands.add(new api.ODCommandResponder("opendiscord:unpin",generalConfig.data.prefix,"unpin"))
|
||||||
opendiscord.responders.commands.get("opendiscord:unpin").workers.add([
|
opendiscord.responders.commands.get("opendiscord:unpin").workers.add([
|
||||||
new api.ODWorker("opendiscord:permissions",1,async (instance,params,source,cancel) => {
|
|
||||||
const permissionMode = generalConfig.data.system.permissions.unpin
|
|
||||||
|
|
||||||
if (permissionMode == "none"){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build("button",{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else if (permissionMode == "everyone") return
|
|
||||||
else if (permissionMode == "admin"){
|
|
||||||
if (!opendiscord.permissions.hasPermissions("support",await opendiscord.permissions.getPermissions(instance.user,instance.channel,instance.guild))){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:["support"]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}else{
|
|
||||||
if (!instance.guild || !instance.member){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #1",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
const role = await opendiscord.client.fetchGuildRole(instance.guild,permissionMode)
|
|
||||||
if (!role){
|
|
||||||
//error
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,error:"Permission Error: Not in Server #2",layout:"advanced"}))
|
|
||||||
return cancel()
|
|
||||||
}
|
|
||||||
if (!role.members.has(instance.member.id)){
|
|
||||||
//no permissions
|
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild:instance.guild,channel:instance.channel,user:instance.user,permissions:[]}))
|
|
||||||
return cancel()
|
|
||||||
}else return
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
new api.ODWorker("opendiscord:unpin",0,async (instance,params,source,cancel) => {
|
new api.ODWorker("opendiscord:unpin",0,async (instance,params,source,cancel) => {
|
||||||
const {guild,channel,user} = instance
|
const {user,member,channel,guild} = instance
|
||||||
|
|
||||||
|
//check permissions
|
||||||
|
const permsResult = await opendiscord.permissions.checkCommandPerms(generalConfig.data.system.permissions.unpin,"support",user,member,channel,guild)
|
||||||
|
if (!permsResult.hasPerms){
|
||||||
|
if (permsResult.reason == "not-in-server") await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
|
else await instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-no-permissions").build(source,{guild,channel,user,permissions:["support"]}))
|
||||||
|
return cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
//check is in guild/Server
|
||||||
if (!guild){
|
if (!guild){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-not-in-guild").build("button",{channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check if ticket exists
|
||||||
const ticket = opendiscord.tickets.get(channel.id)
|
const ticket = opendiscord.tickets.get(channel.id)
|
||||||
if (!ticket || channel.isDMBased()){
|
if (!ticket || channel.isDMBased()){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-unknown").build("button",{guild,channel,user}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when not pinned yet
|
//return when not pinned yet
|
||||||
if (!ticket.get("opendiscord:pinned").value){
|
if (!ticket.get("opendiscord:pinned").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unpin"),layout:"simple"}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error").build("button",{guild,channel,user,error:opendiscord.languages.getTranslation("errors.actionInvalid.unpin"),layout:"simple"}))
|
||||||
return cancel()
|
return cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
//return when busy
|
//return when busy
|
||||||
if (ticket.get("opendiscord:busy").value){
|
if (ticket.get("opendiscord:busy").value){
|
||||||
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
instance.reply(await opendiscord.builders.messages.getSafe("opendiscord:error-ticket-busy").build("button",{guild,channel,user}))
|
||||||
|
|||||||
@@ -101,6 +101,20 @@ export interface ODPermissionSettings {
|
|||||||
*/
|
*/
|
||||||
export type ODPermissionCalculationCallback = (user:discord.User, channel?:discord.Channel|null, guild?:discord.Guild|null, settings?:ODPermissionSettings|null) => Promise<ODPermissionResult>
|
export type ODPermissionCalculationCallback = (user:discord.User, channel?:discord.Channel|null, guild?:discord.Guild|null, settings?:ODPermissionSettings|null) => Promise<ODPermissionResult>
|
||||||
|
|
||||||
|
/**## ODPermissionCommandResult `type`
|
||||||
|
* The result of calculating permissions for a command.
|
||||||
|
*/
|
||||||
|
export type ODPermissionCommandResult = {
|
||||||
|
/**Returns `true` when the user has valid permissions. */
|
||||||
|
hasPerms:false,
|
||||||
|
reason:"no-perms"|"disabled"|"not-in-server"
|
||||||
|
}|{
|
||||||
|
/**Returns `true` when the user has valid permissions. */
|
||||||
|
hasPerms:true,
|
||||||
|
/**Is the user a server admin or a normal member? This does not decide if the user has permissions or not. */
|
||||||
|
isAdmin:boolean
|
||||||
|
}
|
||||||
|
|
||||||
/**## ODPermissionManager `class`
|
/**## ODPermissionManager `class`
|
||||||
* This is an Open Ticket permission manager.
|
* This is an Open Ticket permission manager.
|
||||||
*
|
*
|
||||||
@@ -110,6 +124,8 @@ export type ODPermissionCalculationCallback = (user:discord.User, channel?:disco
|
|||||||
* Add new permissions using the `ODPermission` class in your plugin!
|
* Add new permissions using the `ODPermission` class in your plugin!
|
||||||
*/
|
*/
|
||||||
export class ODPermissionManager extends ODManager<ODPermission> {
|
export class ODPermissionManager extends ODManager<ODPermission> {
|
||||||
|
/**Alias for Open Ticket debugger. */
|
||||||
|
#debug: ODDebugger
|
||||||
/**The function for calculating permissions in this manager. */
|
/**The function for calculating permissions in this manager. */
|
||||||
#calculation: ODPermissionCalculationCallback|null
|
#calculation: ODPermissionCalculationCallback|null
|
||||||
/**An alias to the Open Discord client manager. */
|
/**An alias to the Open Discord client manager. */
|
||||||
@@ -124,6 +140,7 @@ export class ODPermissionManager extends ODManager<ODPermission> {
|
|||||||
|
|
||||||
constructor(debug:ODDebugger, client:ODClientManager, useDefaultCalculation?:boolean){
|
constructor(debug:ODDebugger, client:ODClientManager, useDefaultCalculation?:boolean){
|
||||||
super(debug,"permission")
|
super(debug,"permission")
|
||||||
|
this.#debug = debug
|
||||||
this.#calculation = useDefaultCalculation ? this.#defaultCalculation : null
|
this.#calculation = useDefaultCalculation ? this.#defaultCalculation : null
|
||||||
this.#client = client
|
this.#client = client
|
||||||
}
|
}
|
||||||
@@ -290,4 +307,34 @@ export class ODPermissionManager extends ODManager<ODPermission> {
|
|||||||
//spread result to prevent accidental modification because of referencing
|
//spread result to prevent accidental modification because of referencing
|
||||||
return {...this.defaultResult}
|
return {...this.defaultResult}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**Check the permissions for a certain command of the bot. */
|
||||||
|
async checkCommandPerms(permissionMode:string,requiredLevel:ODPermissionType,user:discord.User,member?:discord.GuildMember|null,channel?:discord.Channel|null,guild?:discord.Guild|null,settings?:ODPermissionSettings): Promise<ODPermissionCommandResult> {
|
||||||
|
if (permissionMode === "none"){
|
||||||
|
return {hasPerms:false,reason:"disabled"}
|
||||||
|
|
||||||
|
}else if (permissionMode === "everyone"){
|
||||||
|
const isAdmin = this.hasPermissions(requiredLevel,await this.getPermissions(user,channel,guild,settings))
|
||||||
|
return {hasPerms:true,isAdmin}
|
||||||
|
|
||||||
|
}else if (permissionMode === "admin"){
|
||||||
|
const isAdmin = this.hasPermissions(requiredLevel,await this.getPermissions(user,channel,guild,settings))
|
||||||
|
if (!isAdmin) return {hasPerms:false,reason:"no-perms"}
|
||||||
|
else return {hasPerms:true,isAdmin}
|
||||||
|
}else{
|
||||||
|
if (!guild || !member){
|
||||||
|
this.#debug.debug("ODPermissionManager.checkCommandPerms(): Permission Error, Not in server! (#1)")
|
||||||
|
return {hasPerms:false,reason:"not-in-server"}
|
||||||
|
}
|
||||||
|
const role = await this.#client.fetchGuildRole(guild,permissionMode)
|
||||||
|
if (!role){
|
||||||
|
this.#debug.debug("ODPermissionManager.checkCommandPerms(): Permission Error, Not in server! (#2)")
|
||||||
|
return {hasPerms:false,reason:"not-in-server"}
|
||||||
|
}
|
||||||
|
if (!role.members.has(member.id)) return {hasPerms:false,reason:"no-perms"}
|
||||||
|
|
||||||
|
const isAdmin = this.hasPermissions(requiredLevel,await this.getPermissions(user,channel,guild,settings))
|
||||||
|
return {hasPerms:true,isAdmin}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user