133 lines
8.8 KiB
TypeScript
133 lines
8.8 KiB
TypeScript
import {openticket, api, utilities} from "../../index"
|
|
import * as discord from "discord.js"
|
|
|
|
const stats = openticket.stats
|
|
const lang = openticket.languages
|
|
|
|
export const loadAllStatScopes = async () => {
|
|
stats.add(new api.ODStatGlobalScope("openticket:global",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.global"))))
|
|
stats.add(new api.ODStatGlobalScope("openticket:system",utilities.emojiTitle("⚙️",lang.getTranslation("stats.scopes.system"))))
|
|
stats.add(new api.ODStatScope("openticket:user",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.user"))))
|
|
stats.add(new api.ODStatScope("openticket:ticket",utilities.emojiTitle("📊",lang.getTranslation("stats.scopes.ticket"))))
|
|
stats.add(new api.ODStatScope("openticket:participants",utilities.emojiTitle("👥",lang.getTranslation("stats.scopes.participants"))))
|
|
}
|
|
|
|
export const loadAllStats = async () => {
|
|
const generalConfig = openticket.configs.get("openticket:general")
|
|
if (!generalConfig) return
|
|
|
|
const global = stats.get("openticket:global")
|
|
if (global){
|
|
global.add(new api.ODBasicStat("openticket:tickets-created",10,lang.getTranslation("stats.properties.ticketsCreated"),0))
|
|
global.add(new api.ODBasicStat("openticket:tickets-closed",9,lang.getTranslation("stats.properties.ticketsClosed"),0))
|
|
global.add(new api.ODBasicStat("openticket:tickets-deleted",8,lang.getTranslation("stats.properties.ticketsDeleted"),0))
|
|
global.add(new api.ODBasicStat("openticket:tickets-reopened",7,lang.getTranslation("stats.properties.ticketsReopened"),0))
|
|
global.add(new api.ODBasicStat("openticket:tickets-autoclosed",6,lang.getTranslation("stats.properties.ticketsAutoclosed"),0))
|
|
global.add(new api.ODBasicStat("openticket:tickets-autodeleted",5,"Tickets Autodeleted",0)) //TODO TRANSLATION!!!
|
|
global.add(new api.ODBasicStat("openticket:tickets-claimed",4,lang.getTranslation("stats.properties.ticketsClaimed"),0))
|
|
global.add(new api.ODBasicStat("openticket:tickets-pinned",3,lang.getTranslation("stats.properties.ticketsPinned"),0))
|
|
global.add(new api.ODBasicStat("openticket:tickets-moved",2,lang.getTranslation("stats.properties.ticketsMoved"),0))
|
|
global.add(new api.ODBasicStat("openticket:users-blacklisted",1,lang.getTranslation("stats.properties.usersBlacklisted"),0))
|
|
global.add(new api.ODBasicStat("openticket:transcripts-created",0,lang.getTranslation("stats.properties.transcriptsCreated"),0))
|
|
}
|
|
|
|
const system = stats.get("openticket:system")
|
|
if (system){
|
|
system.add(new api.ODDynamicStat("openticket:startup-date",1,() => {
|
|
return lang.getTranslation("params.uppercase.startupDate")+": "+discord.time(openticket.processStartupDate,"f")
|
|
}))
|
|
system.add(new api.ODDynamicStat("openticket:version",0,() => {
|
|
return lang.getTranslation("params.uppercase.version")+": `"+openticket.versions.get("openticket:version").toString()+"`"
|
|
}))
|
|
}
|
|
|
|
const user = stats.get("openticket:user")
|
|
if (user){
|
|
user.add(new api.ODDynamicStat("openticket:name",11,async (scopeId,guild,channel,user) => {
|
|
return lang.getTranslation("params.uppercase.name")+": "+discord.userMention(scopeId)
|
|
}))
|
|
user.add(new api.ODDynamicStat("openticket:role",10,async (scopeId,guild,channel,user) => {
|
|
try{
|
|
const scopeMember = await guild.members.fetch(scopeId)
|
|
if (!scopeMember) return ""
|
|
|
|
const permissions = await openticket.permissions.getPermissions(scopeMember.user,channel,guild)
|
|
if (permissions.type == "developer") return lang.getTranslation("params.uppercase.role")+": 💻 `Developer`" //TODO TRANSLATION!!!
|
|
if (permissions.type == "owner") return lang.getTranslation("params.uppercase.role")+": 👑 `Server Owner`" //TODO TRANSLATION!!!
|
|
if (permissions.type == "admin") return lang.getTranslation("params.uppercase.role")+": 💼 `Server Admin`" //TODO TRANSLATION!!!
|
|
if (permissions.type == "moderator") return lang.getTranslation("params.uppercase.role")+": 🚔 `Moderator Team`" //TODO TRANSLATION!!!
|
|
if (permissions.type == "support") return lang.getTranslation("params.uppercase.role")+": 💬 `Support Team`" //TODO TRANSLATION!!!
|
|
else return lang.getTranslation("params.uppercase.role")+": 👤 `Member`" //TODO TRANSLATION!!!
|
|
}catch{
|
|
return ""
|
|
}
|
|
}))
|
|
user.add(new api.ODBasicStat("openticket:tickets-created",8,lang.getTranslation("stats.properties.ticketsCreated"),0))
|
|
user.add(new api.ODBasicStat("openticket:tickets-closed",7,lang.getTranslation("stats.properties.ticketsClosed"),0))
|
|
user.add(new api.ODBasicStat("openticket:tickets-deleted",6,lang.getTranslation("stats.properties.ticketsDeleted"),0))
|
|
user.add(new api.ODBasicStat("openticket:tickets-reopened",5,lang.getTranslation("stats.properties.ticketsReopened"),0))
|
|
user.add(new api.ODBasicStat("openticket:tickets-claimed",4,lang.getTranslation("stats.properties.ticketsClaimed"),0))
|
|
user.add(new api.ODBasicStat("openticket:tickets-pinned",3,lang.getTranslation("stats.properties.ticketsPinned"),0))
|
|
user.add(new api.ODBasicStat("openticket:tickets-moved",2,lang.getTranslation("stats.properties.ticketsMoved"),0))
|
|
user.add(new api.ODBasicStat("openticket:users-blacklisted",1,lang.getTranslation("stats.properties.usersBlacklisted"),0))
|
|
user.add(new api.ODBasicStat("openticket:transcripts-created",0,lang.getTranslation("stats.properties.transcriptsCreated"),0))
|
|
}
|
|
|
|
const ticket = stats.get("openticket:ticket")
|
|
if (ticket){
|
|
ticket.add(new api.ODDynamicStat("openticket:name",5,async (scopeId,guild,channel,user) => {
|
|
return lang.getTranslation("params.uppercase.ticket")+": "+discord.channelMention(scopeId)
|
|
}))
|
|
ticket.add(new api.ODDynamicStat("openticket:status",4,async (scopeId,guild,channel,user) => {
|
|
const ticket = openticket.tickets.get(scopeId)
|
|
if (!ticket) return ""
|
|
|
|
const closed = ticket.exists("openticket:closed") ? ticket.get("openticket:closed").value : false
|
|
|
|
return closed ? lang.getTranslation("params.uppercase.status")+": 🔒 `Closed`" : lang.getTranslation("params.uppercase.status")+": 🔓 `Open`" //TODO TRANSLATION!!!
|
|
}))
|
|
ticket.add(new api.ODDynamicStat("openticket:claimed",3,async (scopeId,guild,channel,user) => {
|
|
const ticket = openticket.tickets.get(scopeId)
|
|
if (!ticket) return ""
|
|
|
|
const claimed = ticket.exists("openticket:claimed") ? ticket.get("openticket:claimed").value : false
|
|
return claimed ? lang.getTranslation("params.uppercase.claimed")+": 🟢 `Yes`" : lang.getTranslation("params.uppercase.claimed")+": 🔴 `No`"
|
|
}))
|
|
ticket.add(new api.ODDynamicStat("openticket:pinned",2,async (scopeId,guild,channel,user) => {
|
|
const ticket = openticket.tickets.get(scopeId)
|
|
if (!ticket) return ""
|
|
|
|
const pinned = ticket.exists("openticket:pinned") ? ticket.get("openticket:pinned").value : false
|
|
return pinned ? lang.getTranslation("params.uppercase.pinned")+": 🟢 `Yes`" : lang.getTranslation("params.uppercase.pinned")+": 🔴 `No`"
|
|
}))
|
|
ticket.add(new api.ODDynamicStat("openticket:creation-date",1,async (scopeId,guild,channel,user) => {
|
|
const ticket = openticket.tickets.get(scopeId)
|
|
if (!ticket) return ""
|
|
|
|
const rawDate = ticket.get("openticket:opened-on").value ?? new Date().getTime()
|
|
return lang.getTranslation("params.uppercase.creationDate")+": "+discord.time(new Date(rawDate),"f")
|
|
}))
|
|
ticket.add(new api.ODDynamicStat("openticket:creator",0,async (scopeId,guild,channel,user) => {
|
|
const ticket = openticket.tickets.get(scopeId)
|
|
if (!ticket) return ""
|
|
|
|
const creator = ticket.get("openticket:opened-by").value
|
|
return lang.getTranslation("params.uppercase.creator")+": "+ (creator ? discord.userMention(creator) : "`unknown`")
|
|
}))
|
|
}
|
|
|
|
const participants = stats.get("openticket:participants")
|
|
if (participants){
|
|
participants.add(new api.ODDynamicStat("openticket:participants",0,async (scopeId,guild,channel,user) => {
|
|
const ticket = openticket.tickets.get(scopeId)
|
|
if (!ticket) return ""
|
|
|
|
const participants = ticket.exists("openticket:participants") ? ticket.get("openticket:participants").value : []
|
|
|
|
return participants.map((p) => {
|
|
return (p.type == "role") ? discord.roleMention(p.id) : discord.userMention(p.id)
|
|
}).join("\n")
|
|
}))
|
|
|
|
}
|
|
} |