(v4.2.0) Added /transcripts history command

This commit is contained in:
DJj123dj
2026-05-25 10:47:28 +02:00
parent 9da066e99e
commit e7475af694
17 changed files with 191 additions and 6 deletions
+35
View File
@@ -637,6 +637,25 @@ export async function loadAllSlashCommands(){
}
]
}))
//TRANSCRIPTS
if (allowedCommands.includes("transcripts")) commands.add(new api.ODSlashCommand("opendiscord:transcripts",{
type:act.ChatInput,
name:"transcripts",
//TODO TRANSLATION!!!
description:"View ticket transcript history of a user.",
contexts:[discord.InteractionContextType.Guild],
integrationTypes:[discord.ApplicationIntegrationType.GuildInstall],
options:[
{
name:"user",
//TODO TRANSLATION!!!
description:"The user to view.",
type:acot.User,
required:true
}
]
}))
}
export async function loadAllTextCommands(){
@@ -1211,6 +1230,22 @@ export async function loadAllTextCommands(){
}
]
}))
//TRANSCRIPTS
if (allowedCommands.includes("transcripts")) commands.add(new api.ODTextCommand("opendiscord:transcripts",{
name:"transcripts",
prefix,
dmPermission:false,
guildPermission:true,
allowBots:false,
options:[
{
name:"user",
type:"user",
required:true
}
]
}))
}
export async function loadAllContextMenus(){
+2
View File
@@ -10,6 +10,7 @@ export async function loadAllDatabases(){
opendiscord.databases.add(defaultTicketsDatabase)
opendiscord.databases.add(defaultUsersDatabase)
opendiscord.databases.add(defaultOptionsDatabase)
opendiscord.databases.add(defaultTranscriptsDatabase)
opendiscord.databases.add(defaultMessageStatesDatabase)
}
@@ -52,4 +53,5 @@ export const defaultStatsDatabase = new api.ODStatsDatabase("opendiscord:stats",
export const defaultTicketsDatabase = new api.ODTicketsDatabase("opendiscord:tickets","tickets.json",defaultTicketFormatter,(isDevdatabase) ? "./devdatabase/" : "./database/")
export const defaultUsersDatabase = new api.ODUsersDatabase("opendiscord:users","users.json",defaultInlineFormatter,(isDevdatabase) ? "./devdatabase/" : "./database/")
export const defaultOptionsDatabase = new api.ODOptionsDatabase("opendiscord:options","options.json",defaultOptionFormatter,(isDevdatabase) ? "./devdatabase/" : "./database/")
export const defaultTranscriptsDatabase = new api.ODTranscriptsDatabase("opendiscord:transcripts","transcripts.json",defaultInlineFormatter,(isDevdatabase) ? "./devdatabase/" : "./database/")
export const defaultMessageStatesDatabase = new api.ODMessageStatesDatabase("opendiscord:message-states","states.json",defaultInlineFormatter,(isDevdatabase) ? "./devdatabase/" : "./database/")
+8
View File
@@ -283,5 +283,13 @@ export async function loadAllHelpMenuComponents(){
textOptions:[{name:"priority",optional:false},{name:"reason",optional:true}],
slashOptions:[{name:"priority",optional:false},{name:"reason",optional:true}]
}))
if (allowedCommands.includes("transcripts")) advanced.add(new api.ODHelpMenuCommandComponent("opendiscord:transcripts",0,{
textName:prefix+"transcripts",
textDescription:"View ticket transcript history of a user.", //TODO TRANSLATION!!!
slashName:"/transcripts",
slashDescription:"View ticket transcript history of a user.", //TODO TRANSLATION!!!
textOptions:[{name:"user",optional:false}],
slashOptions:[{name:"user",optional:false}]
}))
}
}
+13
View File
@@ -7,6 +7,7 @@ const userDatabase = opendiscord.databases.get("opendiscord:users")
const ticketDatabase = opendiscord.databases.get("opendiscord:tickets")
const statsDatabase = opendiscord.databases.get("opendiscord:stats")
const optionDatabase = opendiscord.databases.get("opendiscord:options")
const transcriptsDatabase = opendiscord.databases.get("opendiscord:transcripts")
const mainServer = opendiscord.client.mainServer
export async function loadAllTasks(){
@@ -248,6 +249,18 @@ export async function loadDatabaseCleanersTasks(){
}
})
}))
//TRANSCRIPT DATABASE CLEANER
opendiscord.tasks.add(new api.ODTask("opendiscord:transcript-database-cleaner",8,async () => {
//preserve max 20 transcripts per user (async)
const userCount: Map<string,number> = new Map()
for (const {key,value:transcript} of (await transcriptsDatabase.getCategory("opendiscord:transcript") ?? []).sort((a,b) => (b.value.ticketDeletedDate ?? 0)-(a.value.ticketDeletedDate ?? 0))){
const currentAmount = userCount.get(transcript.ticketCreatorId) ?? 0
userCount.set(transcript.ticketCreatorId,currentAmount+1)
if (currentAmount > 20) transcriptsDatabase.delete("opendiscord:transcript",key)
}
}))
}
export async function loadPanelAutoUpdateTasks(){