Add: Transfer ticket & Priority change (DM) logs

This commit is contained in:
DJj123dj
2026-05-24 22:21:01 +02:00
parent 45f15a2df6
commit 9da066e99e
6 changed files with 59 additions and 12 deletions
+16
View File
@@ -121,6 +121,22 @@ export async function registerActions(){
}), }),
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => { new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket,newCreator,reason} = params const {guild,channel,user,ticket,newCreator,reason} = params
const lastCreatorId = ticket.get("opendiscord:previous-creators").value.at(-1)
if (!lastCreatorId) return
const lastCreator = await opendiscord.client.fetchUser(lastCreatorId)
if (!lastCreator) return
//to logs
if (generalConfig.data.logs.enabled && generalConfig.data.logs.logMessages.transferring.logs){
const logChannel = opendiscord.posts.get("opendiscord:logs")
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(origin,{guild,channel,user,ticket,mode:"transfer",reason,additionalData:lastCreator,additionalData2:newCreator}))
}
//to dm
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
if (creator && generalConfig.data.logs.logMessages.transferring.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(origin,{guild,channel,user,ticket,mode:"transfer",reason,additionalData:lastCreator,additionalData2:newCreator}))
}), }),
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => { new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {guild,channel,user,ticket,newCreator} = params const {guild,channel,user,ticket,newCreator} = params
+13 -1
View File
@@ -51,7 +51,19 @@ export async function registerActions(){
openticketUtils.updateTicketMessage(guild,channel,user,ticket) openticketUtils.updateTicketMessage(guild,channel,user,ticket)
}), }),
new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => { new api.ODWorker("opendiscord:discord-logs",1,async (instance,params,origin,cancel) => {
const {guild,channel,user,ticket} = params const {guild,channel,user,ticket,reason,newPriority} = params
const renderedPriority = newPriority.renderDisplayName()
//to logs
if (generalConfig.data.logs.enabled && generalConfig.data.logs.logMessages.priorityChange.logs){
const logChannel = opendiscord.posts.get("opendiscord:logs")
if (logChannel) logChannel.send(await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-logs").build(origin,{guild,channel,user,ticket,mode:"priority",reason,additionalData:renderedPriority}))
}
//to dm
const creator = await opendiscord.tickets.getTicketUser(ticket,"creator")
if (creator && generalConfig.data.logs.logMessages.priorityChange.dm) await opendiscord.client.sendUserDm(creator,await opendiscord.builders.messages.getSafe("opendiscord:ticket-action-dm").build(origin,{guild,channel,user,ticket,mode:"priority",reason,additionalData:renderedPriority}))
}), }),
new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => { new api.ODWorker("opendiscord:logs",0,(instance,params,origin,cancel) => {
const {guild,channel,user,ticket,newPriority} = params const {guild,channel,user,ticket,newPriority} = params
+14 -2
View File
@@ -812,7 +812,7 @@ const ticketEmbeds = () => {
embeds.add(new api.ODEmbed("opendiscord:ticket-action-dm")) embeds.add(new api.ODEmbed("opendiscord:ticket-action-dm"))
embeds.get("opendiscord:ticket-action-dm").workers.add( embeds.get("opendiscord:ticket-action-dm").workers.add(
new api.ODWorker("opendiscord:ticket-action-dm",0,async (instance,params,origin) => { new api.ODWorker("opendiscord:ticket-action-dm",0,async (instance,params,origin) => {
const {user,mode,ticket,reason,additionalData} = params const {user,mode,ticket,reason,additionalData,additionalData2} = params
const channel = await opendiscord.tickets.getTicketChannel(ticket) const channel = await opendiscord.tickets.getTicketChannel(ticket)
instance.setColor(generalConfig.data.mainColor) instance.setColor(generalConfig.data.mainColor)
@@ -853,6 +853,12 @@ const ticketEmbeds = () => {
}else if (mode == "remove"){ }else if (mode == "remove"){
instance.setTitle(utilities.emojiTitle("👤",lang.getTranslation("actions.titles.remove"))) instance.setTitle(utilities.emojiTitle("👤",lang.getTranslation("actions.titles.remove")))
instance.setDescription(lang.getTranslationWithParams("actions.logs.removeDm",[(additionalData instanceof discord.User ? discord.userMention(additionalData.id) : "<unknown>")])) instance.setDescription(lang.getTranslationWithParams("actions.logs.removeDm",[(additionalData instanceof discord.User ? discord.userMention(additionalData.id) : "<unknown>")]))
}else if (mode == "priority"){
instance.setTitle(utilities.emojiTitle("🚨",lang.getTranslation("actions.titles.prioritySet")))
instance.setDescription(lang.getTranslationWithParams("actions.logs.prioritySetDm",[(typeof additionalData === "string" ? "**"+additionalData+"**" : "**<unknown>**")]))
}else if (mode == "transfer"){
instance.setTitle(utilities.emojiTitle("🚨",lang.getTranslation("actions.titles.transfer")))
instance.setDescription(lang.getTranslationWithParams("actions.logs.transferDm",[(additionalData instanceof discord.User ? discord.userMention(additionalData.id) : "<unknown>"),(additionalData2 instanceof discord.User ? discord.userMention(additionalData2.id) : "<unknown>")]))
} }
}) })
) )
@@ -861,7 +867,7 @@ const ticketEmbeds = () => {
embeds.add(new api.ODEmbed("opendiscord:ticket-action-logs")) embeds.add(new api.ODEmbed("opendiscord:ticket-action-logs"))
embeds.get("opendiscord:ticket-action-logs").workers.add( embeds.get("opendiscord:ticket-action-logs").workers.add(
new api.ODWorker("opendiscord:ticket-action-logs",0,async (instance,params,origin) => { new api.ODWorker("opendiscord:ticket-action-logs",0,async (instance,params,origin) => {
const {user,mode,ticket,reason,additionalData} = params const {user,mode,ticket,reason,additionalData,additionalData2} = params
const channel = await opendiscord.tickets.getTicketChannel(ticket) const channel = await opendiscord.tickets.getTicketChannel(ticket)
instance.setColor(generalConfig.data.mainColor) instance.setColor(generalConfig.data.mainColor)
@@ -907,6 +913,12 @@ const ticketEmbeds = () => {
}else if (mode == "remove"){ }else if (mode == "remove"){
instance.setTitle(utilities.emojiTitle("👤",lang.getTranslation("actions.titles.remove"))) instance.setTitle(utilities.emojiTitle("👤",lang.getTranslation("actions.titles.remove")))
instance.setDescription(lang.getTranslationWithParams("actions.logs.removeLog",[(additionalData instanceof discord.User ? discord.userMention(additionalData.id) : "<unknown>"),discord.userMention(user.id)])) instance.setDescription(lang.getTranslationWithParams("actions.logs.removeLog",[(additionalData instanceof discord.User ? discord.userMention(additionalData.id) : "<unknown>"),discord.userMention(user.id)]))
}else if (mode == "priority"){
instance.setTitle(utilities.emojiTitle("🚨",lang.getTranslation("actions.titles.prioritySet")))
instance.setDescription(lang.getTranslationWithParams("actions.logs.prioritySetLog",[(typeof additionalData === "string" ? "**"+additionalData+"**" : "**<unknown>**"),discord.userMention(user.id)]))
}else if (mode == "transfer"){
instance.setTitle(utilities.emojiTitle("🚨",lang.getTranslation("actions.titles.transfer")))
instance.setDescription(lang.getTranslationWithParams("actions.logs.transferLog",[(additionalData instanceof discord.User ? discord.userMention(additionalData.id) : "<unknown>"),(additionalData2 instanceof discord.User ? discord.userMention(additionalData2.id) : "<unknown>"),discord.userMention(user.id)]))
} }
}) })
) )
+4 -4
View File
@@ -566,8 +566,8 @@ const ticketMessages = () => {
messages.add(new api.ODMessage("opendiscord:ticket-action-dm")) messages.add(new api.ODMessage("opendiscord:ticket-action-dm"))
messages.get("opendiscord:ticket-action-dm").workers.add( messages.get("opendiscord:ticket-action-dm").workers.add(
new api.ODWorker("opendiscord:ticket-action-dm",0,async (instance,params,origin) => { new api.ODWorker("opendiscord:ticket-action-dm",0,async (instance,params,origin) => {
const {guild,channel,user,mode,ticket,reason,additionalData} = params const {guild,channel,user,mode,ticket,reason,additionalData,additionalData2} = params
instance.addEmbed(await embeds.getSafe("opendiscord:ticket-action-dm").build(origin,{guild,channel,user,mode,ticket,reason,additionalData})) instance.addEmbed(await embeds.getSafe("opendiscord:ticket-action-dm").build(origin,{guild,channel,user,mode,ticket,reason,additionalData,additionalData2}))
}) })
) )
@@ -575,8 +575,8 @@ const ticketMessages = () => {
messages.add(new api.ODMessage("opendiscord:ticket-action-logs")) messages.add(new api.ODMessage("opendiscord:ticket-action-logs"))
messages.get("opendiscord:ticket-action-logs").workers.add( messages.get("opendiscord:ticket-action-logs").workers.add(
new api.ODWorker("opendiscord:ticket-action-logs",0,async (instance,params,origin) => { new api.ODWorker("opendiscord:ticket-action-logs",0,async (instance,params,origin) => {
const {guild,channel,user,mode,ticket,reason,additionalData} = params const {guild,channel,user,mode,ticket,reason,additionalData,additionalData2} = params
instance.addEmbed(await embeds.getSafe("opendiscord:ticket-action-logs").build(origin,{guild,channel,user,mode,ticket,reason,additionalData})) instance.addEmbed(await embeds.getSafe("opendiscord:ticket-action-logs").build(origin,{guild,channel,user,mode,ticket,reason,additionalData,additionalData2}))
}) })
) )
} }
+8 -1
View File
@@ -1,6 +1,8 @@
/////////////////////////////////////// ///////////////////////////////////////
//OPEN TICKET MAIN MODULE //OPEN TICKET MAIN MODULE
/////////////////////////////////////// ///////////////////////////////////////
import fs from "fs"
import path from "path"
import * as api from "./api.js" import * as api from "./api.js"
import * as utilities from "@open-discord-bots/framework/utilities" import * as utilities from "@open-discord-bots/framework/utilities"
@@ -108,7 +110,7 @@ export class ODOpenTicketMain extends api.ODMain {
},"openticket") },"openticket")
this.livestatus.useMain(this) this.livestatus.useMain(this)
this.versions.add(api.ODVersion.fromString("opendiscord:version","v4.2.0")) this.versions.add(api.ODVersion.fromString("opendiscord:version",this.readVersionFromPackage()))
this.versions.add(api.ODVersion.fromString("opendiscord:transcripts","v2.1.0")) this.versions.add(api.ODVersion.fromString("opendiscord:transcripts","v2.1.0"))
//OPEN TICKET //OPEN TICKET
@@ -134,4 +136,9 @@ export class ODOpenTicketMain extends api.ODMain {
this.roles = new api.ODRoleManager(debug) this.roles = new api.ODRoleManager(debug)
this.priorities = new api.ODMappedPriorityManager(debug) this.priorities = new api.ODMappedPriorityManager(debug)
} }
private readVersionFromPackage(): string {
const packageJson: {version:string} = JSON.parse(fs.readFileSync(path.join(process.cwd(),"./package.json")).toString())
return "v"+packageJson.version
}
} }
+4 -4
View File
@@ -111,8 +111,8 @@ export interface ODEmbedManagerIdMappings extends api.ODEmbedManagerIdConstraint
"opendiscord:move-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:ODTicketOption},workers:"opendiscord:move-message"}, "opendiscord:move-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:ODTicketOption},workers:"opendiscord:move-message"},
"opendiscord:add-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:discord.User},workers:"opendiscord:add-message"}, "opendiscord:add-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:discord.User},workers:"opendiscord:add-message"},
"opendiscord:remove-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:discord.User},workers:"opendiscord:remove-message"}, "opendiscord:remove-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:discord.User},workers:"opendiscord:remove-message"},
"opendiscord:ticket-action-dm":{origin:"slash"|"text"|"ticket-message"|"close-message"|"reopen-message"|"delete-message"|"claim-message"|"unclaim-message"|"pin-message"|"unpin-message"|"autoclose-message"|"autoclose"|"autodelete"|"clear"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,mode:"close"|"reopen"|"delete"|"claim"|"unclaim"|"pin"|"unpin"|"rename"|"move"|"add"|"remove",ticket:ODTicket,reason:string|null,additionalData:null|string|discord.User|ODTicketOption},workers:"opendiscord:ticket-action-dm"}, "opendiscord:ticket-action-dm":{origin:"slash"|"text"|"ticket-message"|"close-message"|"reopen-message"|"delete-message"|"claim-message"|"unclaim-message"|"pin-message"|"unpin-message"|"autoclose-message"|"priority-message"|"topic-message"|"transfer-message"|"autoclose"|"autodelete"|"clear"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,mode:"close"|"reopen"|"delete"|"claim"|"unclaim"|"pin"|"unpin"|"rename"|"move"|"add"|"remove"|"priority"|"transfer"|"topic",ticket:ODTicket,reason:string|null,additionalData:null|string|discord.User|ODTicketOption,additionalData2?:discord.User},workers:"opendiscord:ticket-action-dm"},
"opendiscord:ticket-action-logs":{origin:"slash"|"text"|"ticket-message"|"close-message"|"reopen-message"|"delete-message"|"claim-message"|"unclaim-message"|"pin-message"|"unpin-message"|"autoclose-message"|"autoclose"|"autodelete"|"clear"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,mode:"close"|"reopen"|"delete"|"claim"|"unclaim"|"pin"|"unpin"|"rename"|"move"|"add"|"remove",ticket:ODTicket,reason:string|null,additionalData:null|string|discord.User|ODTicketOption},workers:"opendiscord:ticket-action-logs"}, "opendiscord:ticket-action-logs":{origin:"slash"|"text"|"ticket-message"|"close-message"|"reopen-message"|"delete-message"|"claim-message"|"unclaim-message"|"pin-message"|"unpin-message"|"autoclose-message"|"priority-message"|"topic-message"|"transfer-message"|"autoclose"|"autodelete"|"clear"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,mode:"close"|"reopen"|"delete"|"claim"|"unclaim"|"pin"|"unpin"|"rename"|"move"|"add"|"remove"|"priority"|"transfer"|"topic",ticket:ODTicket,reason:string|null,additionalData:null|string|discord.User|ODTicketOption,additionalData2?:discord.User},workers:"opendiscord:ticket-action-logs"},
"opendiscord:blacklist-view":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:blacklist-view"}, "opendiscord:blacklist-view":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:blacklist-view"},
"opendiscord:blacklist-get":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,data:discord.User},workers:"opendiscord:blacklist-get"}, "opendiscord:blacklist-get":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,data:discord.User},workers:"opendiscord:blacklist-get"},
@@ -196,8 +196,8 @@ export interface ODMessageManagerIdMappings extends api.ODMessageManagerIdConstr
"opendiscord:move-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:ODTicketOption},workers:"opendiscord:move-message"}, "opendiscord:move-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:ODTicketOption},workers:"opendiscord:move-message"},
"opendiscord:add-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:discord.User},workers:"opendiscord:add-message"}, "opendiscord:add-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:discord.User},workers:"opendiscord:add-message"},
"opendiscord:remove-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:discord.User},workers:"opendiscord:remove-message"}, "opendiscord:remove-message":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,ticket:ODTicket,reason:string|null,data:discord.User},workers:"opendiscord:remove-message"},
"opendiscord:ticket-action-dm":{origin:"slash"|"text"|"ticket-message"|"close-message"|"reopen-message"|"delete-message"|"claim-message"|"unclaim-message"|"pin-message"|"unpin-message"|"autoclose-message"|"autoclose"|"autodelete"|"clear"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,mode:"close"|"reopen"|"delete"|"claim"|"unclaim"|"pin"|"unpin"|"rename"|"move"|"add"|"remove",ticket:ODTicket,reason:string|null,additionalData:null|string|discord.User|ODTicketOption},workers:"opendiscord:ticket-action-dm"}, "opendiscord:ticket-action-dm":{origin:"slash"|"text"|"ticket-message"|"close-message"|"reopen-message"|"delete-message"|"claim-message"|"unclaim-message"|"pin-message"|"unpin-message"|"autoclose-message"|"priority-message"|"topic-message"|"transfer-message"|"autoclose"|"autodelete"|"clear"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,mode:"close"|"reopen"|"delete"|"claim"|"unclaim"|"pin"|"unpin"|"rename"|"move"|"add"|"remove"|"priority"|"transfer"|"topic",ticket:ODTicket,reason:string|null,additionalData:null|string|discord.User|ODTicketOption,additionalData2?:discord.User},workers:"opendiscord:ticket-action-dm"},
"opendiscord:ticket-action-logs":{origin:"slash"|"text"|"ticket-message"|"close-message"|"reopen-message"|"delete-message"|"claim-message"|"unclaim-message"|"pin-message"|"unpin-message"|"autoclose-message"|"autoclose"|"autodelete"|"clear"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,mode:"close"|"reopen"|"delete"|"claim"|"unclaim"|"pin"|"unpin"|"rename"|"move"|"add"|"remove",ticket:ODTicket,reason:string|null,additionalData:null|string|discord.User|ODTicketOption},workers:"opendiscord:ticket-action-logs"}, "opendiscord:ticket-action-logs":{origin:"slash"|"text"|"ticket-message"|"close-message"|"reopen-message"|"delete-message"|"claim-message"|"unclaim-message"|"pin-message"|"unpin-message"|"autoclose-message"|"priority-message"|"topic-message"|"transfer-message"|"autoclose"|"autodelete"|"clear"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,mode:"close"|"reopen"|"delete"|"claim"|"unclaim"|"pin"|"unpin"|"rename"|"move"|"add"|"remove"|"priority"|"transfer"|"topic",ticket:ODTicket,reason:string|null,additionalData:null|string|discord.User|ODTicketOption,additionalData2?:discord.User},workers:"opendiscord:ticket-action-logs"},
"opendiscord:blacklist-view":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:blacklist-view"}, "opendiscord:blacklist-view":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User},workers:"opendiscord:blacklist-view"},
"opendiscord:blacklist-get":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,data:discord.User},workers:"opendiscord:blacklist-get"}, "opendiscord:blacklist-get":{origin:"slash"|"text"|"other",params:{guild:discord.Guild,channel:discord.TextBasedChannel,user:discord.User,data:discord.User},workers:"opendiscord:blacklist-get"},